home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / wais / doc / z3950-spec.txt < prev   
Text File  |  1995-05-09  |  119KB  |  2,675 lines

  1.  
  2.                ANSI Z39.50 Version 2
  3.                 THIRD DRAFT
  4.                    (Z39.50/V2D3)
  5.                  May 1991
  6.  
  7.  
  8. This is an interim draft, for internal NISO use, subject to review and
  9. revision.
  10.  
  11. STATUS: This is the third draft of version 2 of ANSI Z39.50-1988
  12. (Z39.50/V2D3).
  13.  
  14.  
  15. 1.  INTRODUCTION
  16.  
  17.     This is one of a set of standards produced to facilitate the
  18. inter-connection of computer systems.  It is positioned with respect to
  19. other related standards by the Open Systems Interconnection (OSI) basic
  20. reference model (ISO 7498). The aim of Open Systems Interconnection is to
  21. allow the interconnection of computer systems, with a minimum of technical
  22. agreement outside the interconnection standards.
  23.     
  24.     This standard defines a protocol within the application layer of the
  25. reference model, and is concerned in particular with the retrieval of
  26. information stored in machine readable databases.
  27.  
  28.  
  29. 1.1  SCOPE AND FIELD OF APPLICATION 
  30.  
  31.     This standard describes the Information Retrieval application service
  32. (section 3) and specifies the Information Retrieval application protocol
  33. (section 4), for Open Systems Interconnection.
  34.  
  35.     The Information Retrieval application service is described in terms of
  36. services which provide capabilities within an application.  The description
  37. neither specifies nor constrains the implementation within a computer
  38. system. The purpose of the service description is to define the functions
  39. that the protocol must support.
  40.  
  41.     The protocol specification includes the definition of the protocol
  42. control information, the rules for exchanging this information, and the
  43. conformance requirements to be met by implementation of this protocol.
  44.  
  45.     This standard is intended particularly for use in the area of library
  46. and information sciences. It addresses connection-oriented,
  47. program-to-program communication utilizing telecommunications.  It does not
  48. address the interchange of information with terminals or via other physical
  49. media.
  50.   
  51.  
  52.  
  53. 1.2  MODEL 
  54.  
  55.     The objective of this standard is to facilitate the open
  56. interconnection of database users with database providers. It is necessary
  57. to distinguish between the set of OSI standards and the hardware and
  58. software implementation of a system using the protocols specified in these
  59. standards.  The ways in which databases are implemented differ
  60. considerably; different systems have different styles for describing the
  61. storage of data and the means by which it can be accessed. A common,
  62. abstract model is therefore used in describing databases, to which an
  63. individual system can map its implementation.  This enables different
  64. systems to communicate in standard, mutually understandable terms.
  65.  
  66.     The term "database" as used in this standard refers to a collection of
  67. one or more files, each with a unique name. A group of files within a
  68. database may also have a name and be accessed as a single database.  The
  69. unit of information for retrieval from a database is a record. All of the
  70. records within a given file have a common structure, contain a common set
  71. of data elements and a common set of access points. An access point is a
  72. unique or non-unique key which can be specified either singly or in
  73. combination with other access points in a search for records.  An access
  74. point may be equivalent to a data element, be derived from a data element,
  75. or the combination of all or part of two or more data elements.
  76.  
  77.     A search query may be applied to a database, specifying values to be
  78. matched against the access points of the database.  The subset of records
  79. formed by applying the search query is termed the result set.  A result set
  80. may itself be referenced in a subsequent search query statement and
  81. manipulated to form a new result set.
  82.  
  83.     For generality, it is assumed that query processing does not
  84. necessarily require physical access to records; a result set is thus
  85. assumed to be the identification of (e.g. pointers to) records, as opposed
  86. to the actual set of records, selected by a query.  (It is not assumed that
  87. the database records are locked.  Methods of concurrency control, which
  88. would prevent modification or deletion of result set records, are not
  89. addressed by this standard.)  A result set may be used as a selection
  90. mechanism for the transfer of records between systems; the result set
  91. itself is considered to be a purely local data structure and is not
  92. transfered (that is, records are transferred, but not the local pointers to
  93. the records).
  94.  
  95.     A generic search query statement is composed of a database name
  96. followed by a query statement.  The Type-1 query statement defined in this
  97. standard consists of either a single access point clause, or several access
  98. point clauses linked by logical operators. For example:
  99.  
  100.     "In the database which is named 'Books' find all of the records for
  101.      which the access point 'title word' contains the value 'evangeline'
  102.      AND the access point 'author' contains the value 'longfellow'".
  103.  
  104. Following the processing of a search, the set of items with the specified
  105. properties (the result set) is made available by the target system, to the
  106. origin system, for subsequent retrieval requests. The logical structure of
  107. a result set is that of a named, ordered list of triples consisting of (a)
  108. an ordinal number corresponding to the position of the triple in the list,
  109. (b) a database name, and (c) a unique record identifier (of local
  110. significance only) within the database named in (b).  A result set item is
  111. referenced by its position within the result set, that is, by (a).
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118. 1.3  REFERENCES
  119.  
  120. ISO 7498 -- Information Processing Systems - Open Systems Interconnection -
  121. Basic Reference Model
  122.  
  123. ISO 8649 -- Information Processing Systems - Open Systems Interconnection -
  124. Service Definition for Association Control Service Element
  125.  
  126. ISO 8650 -- Information processing systems - Open Systems Interconnection -
  127. Service Definition for Association Control Protocol Specification
  128.  
  129. ISO 8822 -- Information Processing Systems - Open Systems Interconnection -
  130. Connection Oriented Presentation Service Definition
  131.  
  132. ISO 8824 -- Information Processing Systems - Open Systems Interconnection -
  133. Abstract Syntax Notation One (ASN.1)
  134.  
  135. ANSI X3.4 -- Information Processing - Coded Character Sets - 7-bit American
  136. National Standard Code for Information Interchange (7-bit ASCII)
  137.  
  138. ISO 2709 -- Documentation - Format for Bibliographic Information
  139. Interchange on Magnetic Tape
  140.  
  141.  
  142. 2.  DEFINITIONS 
  143.  
  144.     In cases below where formal definitions appear in other standards,
  145. references to those standards are given, in those cases descriptions and/or
  146. alternate definitions (indented) are sometimes provided.  Alternate
  147. definitions apply only to the Information Retrieval application service and
  148. protocol, and only within the context of this document.
  149.  
  150. APDU - See Application Protocol Data Unit 
  151.  
  152. Application Association --   See ISO xxxx
  153.  
  154.   For the Information Retrieval service and protocol, an application
  155. association is analogous to an individual communication session between a
  156. database user and a database provider.  Each association consists of an
  157. origin application and a target application, and these roles may not be
  158. reversed within an association.
  159.  
  160. Application Entity --   See ISO xxxx. 
  161.   
  162. Application Protocol --  
  163. See ISO xxxx. 
  164.  
  165.   The rules governing the format and exchange of information
  166.        between an origin and target application. 
  167.  
  168. Application Protocol Control Information --  See ISO xxxx.
  169.  
  170.         The information conveyed by application protocol data units. 
  171.   
  172. Application Protocol Data Unit --   See ISO xxxx.
  173.  
  174.         A unit of data passed between an origin and a target. 
  175.  Application Service User --   See ISO xxxx. 
  176.  
  177.   (The concept of service-user is employed to facilitate the specification
  178. of protocol procedures and is not analogous to the database user.)
  179.  
  180. Connection Oriented Communication --   See ISO xxxx. 
  181.  
  182. Database Provider -- The application which provides access to a database
  183. local to that application.
  184.  
  185. Database User -- The application which accesses a remote database. 
  186.  
  187. Origin Application -- The application that initiates an association and is
  188. the source of requests during the association.
  189.  
  190.         The database user. 
  191.  
  192. Name --   See ISO xxxx. 
  193.  
  194. OSI -- Open Systems Interconnection.
  195.   
  196. Primitive --   See ISO xxxx. 
  197.  
  198. Result set -- An ordered list of triples consisting of (a) an ordinal
  199. number corresponding to the position of the triple in the list, (b) a
  200. database name, and (c) a unique record identifier (of local significance
  201. only) within the database named in (b).  A result set is formed by applying
  202. a search query.
  203.  
  204. Service provider --   See ISO xxxx. 
  205.  
  206. (The concept of service-provider is employed to facilitate the
  207. specification of protocol procedures.  It is not analogous to the database
  208. provider, and it does not refer to providers of telecommunication
  209. services.)
  210.  
  211. Target Application -- The application that accepts an association and is
  212. the sink for requests during the association.
  213.  
  214.         The database provider. 
  215.  
  216. Primitive Name --   See ISO xxxx. 
  217.  
  218.  
  219. 3.  INFORMATION RETRIEVAL SERVICE 
  220.  
  221.     This section defines the Information Retrieval service, which is
  222. supported by the Information Retrieval protocol.
  223.  
  224.  
  225. 3.1  GENERAL CHARACTERISTICS OF THE INFORMATION RETRIEVAL SERVICE 
  226.  
  227.     The service definition describes an activity between two applications
  228. on different computers: an initiating application, the origin, and a
  229. responding application, the target.  The target is associated with one or
  230. more databases. Communication between origin and target is via an
  231. application association.  An association is explicitly established by the
  232. origin and may be explicitly terminated by either origin or target, or
  233. implicitly terminated by a communication failure or other external event.
  234.     The roles of origin and target may not be reversed within an
  235. association. An association cannot be restarted, thus no status information
  236. is retained once an association is released.
  237.  
  238.     The complete application service is composed of the association control
  239. service element, which provides association management, and one or more
  240. specific application services, such as the Information Retrieval
  241. application service.  There are three distinct phases during the life of an
  242. application association: establishment, information transfer, and
  243. termination. The association control service element provides all of the
  244. services required during the establishment and termination phases,
  245. including the selection of an application context specifying, among other
  246. things, the set of service elements which are valid during the information
  247. transfer phase.  Section 4.2.1.2 specifies those services for association
  248. control which are assumed by the Information Retrieval service.
  249.  
  250. 3.2  FACILITIES OF THE INFORMATION RETRIEVAL SERVICE 
  251.  
  252.     There are seven facilities defined by this standard.  All consist of a
  253. single service except the Termination facility, which consists of two
  254. services.
  255.  
  256.     (1) Initialization Facility Init Service: Init request from the origin
  257. followed (possibly after one or more intervening Access-control and/or
  258. Resource-control request/response sequences) by an Init response from the
  259. target
  260.  
  261.     (2) Search Facility Search Service: Search request from the origin
  262. followed (possibly after one or more intervening Access-control and/or
  263. Resource-control request/response sequences) by a Search response from the
  264. target
  265.  
  266.     (3) Retrieval Facility Present Service: Present request from origin
  267. followed (possibly after one or more intervening Access-control and/or
  268. Resource-control request/response sequences) by a Present response from the
  269. target
  270.  
  271.     (4) Result-set-delete Facility Delete Service: Delete request from the
  272. origin followed (possibly after one or more intervening Access-control
  273. and/or Resource-control request/response sequences) by a Delete response
  274. from the target
  275.  
  276.     (5)    Access Control Facility  Access-control service: Access-control
  277. request by the target, following an Init, Search, Present, or Delete
  278. request by the origin, or following a Resource-control or Access-control
  279. request/response sequence, and followed by an Access-control response from
  280. the origin  
  281.  
  282.     (6) Accounting/Resource Control Facility Resource-control Service:
  283. Resource-control request by the target, following an Init, Search, Present,
  284. or Delete request by the origin, or following a Resource-control or
  285. Access-control request/ response sequence, and followed by a
  286. Resource-control response from the origin.
  287.  
  288.     (7)    Termination Facility  The Termination Facility allows an origin
  289. or target system to initiate abrupt termination of the association, or an
  290. origin system to initiate graceful termination.  
  291.   IR-abort Service: IR-abort request by either the origin or the target.
  292.  
  293.   IR-Release Service: IR-release request by the origin followed by an
  294. IR-release response by the target.
  295.  
  296.   The IR-abort and IR-release services map directly onto the A-ABORT and
  297. A-RELEASE services (respectively) of the association control service
  298. element.
  299.  
  300. 3.2.1  Initialization Facility
  301.  
  302. 3.2.1.1 Init Service 
  303.  
  304.     The Init service allows an origin to propose values for initialization
  305. parameters.  The target system may propose alternative values for some of
  306. the parameters.  If so, the origin must either accept the alternative
  307. values proposed by the target or else terminate communication.
  308.  
  309. 3.2.1.1.1 Id/authentication The origin and target agree, outside the scope
  310. of the standard, whether or not this parameter is to be supplied by the
  311. origin, and if so, what the value is.  This value is used by the target to
  312. determine if the origin is authorized to enter into communication with the
  313. target.
  314.  
  315.  
  316. 3.2.1.1.2 Options The Init request specifies either "will use" or "will not
  317. use", and the Init response specifies "will support" or "will not support"
  318. for the following capabilities:
  319.  
  320.            1. search
  321.            2. present
  322.            3. delete
  323.  
  324. If the target specified "will support" for a particular capability, then
  325. the origin may assume that the service will be available and may use the
  326. service during the association, even if the origin had specified "will not
  327. use" for that service.
  328.  
  329.                                  ORIGIN           TARGET
  330.         PARAMETER                REQUEST          RESPONSE
  331.     
  332.      Id/authentication           x (optional)
  333.      Options                     x                x  
  334.      Preferred-message-size      x                x
  335.      Maximum-record-size         x                x
  336.      Result                                       x
  337.      User-information-field      x (optional)     x (optional)
  338.      Reference-id                x (optional)     x (if applicable)
  339.  
  340.     In addition, the Init request specifies either "will support" or "will
  341. not support", and the Init response specifies "will use" or "will not use"
  342. for each of the following capabilities,
  343.  
  344.            1. resource-control
  345.            2. access-control
  346.  
  347.     If the request specifies "will not support" for a given capability, and
  348. the response specifies "will use" for that capability, then the value of
  349. Result must be "reject".
  350.     
  351.     Note: the above two lists of capabilities are subject to expansion in
  352. future versions of this protocol.
  353.     
  354.     search - The origin specifies "will use" for "search" if it intends to
  355. submit Search requests.  If so, the target indicates that it is willing (or
  356. unwilling) to accept Search requests by specifying "will support" (or "will
  357. not support") for "search".
  358.  
  359.     present - The origin specifies "will use" for "present" if it intends
  360. to submit Present requests.  If so, the target indicates that it is willing
  361. (or unwilling) to accept Present requests by specifying "will support" (or
  362. "will not support") for "present".
  363.  
  364.     delete - The origin specifies "will use" for "delete" if it intends to
  365. submit Delete requests.  If so, the target indicates that it is willing (or
  366. unwilling) to accept Delete requests by specifying "will support" (or "will
  367. not support") for "delete".
  368.  
  369.     resource-control - The origin indicates that it is prepared to receive
  370. and respond to a Resource-control request from the target, by specifying
  371. "will support" for "resource-control".  Conversely, the origin indicates
  372. that it is not prepared to receive a Resource-control request by specifying
  373. "will not support".  In the latter case, if the target cannot suppress
  374. sending a Resource-control request, it should reject the connection by
  375. setting Result to "reject", specifying "will use" for "resource-control",
  376. and (optionally) supplying a text message in the User-information-field.
  377.  
  378.     access-control - Likewise, the origin indicates whether or not it is
  379. prepared to receive and respond to an Access-control request from the
  380. target, by specifying "will support" or "will not support" for
  381. "access-control".
  382.  
  383.     Security is invoked at different levels. In addition to user
  384. authentication at the outset of an association, security might be invoked
  385. to control access to a particular database, record, result-set, or use of a
  386. command.
  387.  
  388.     If the origin is not capable of receiving an Access-control request,
  389. and if security requirements on the target system mandate that security
  390. (other than that which might be provided by the parameter
  391. ID/authentication) be invoked at the outset of an association, then the
  392. target should reject the association by setting the parameter Result to
  393. "reject", and specifying "will use" for "access-control".  However, if the
  394. target invokes security, but not at the association level, then the target
  395. may choose to accept the connection.  In that case, if the target
  396. subsequently receives a command that would trigger an Access-control
  397. request, the target agrees to suppress the request and respond to the
  398. command with an error status indicating that a security challenge was
  399. required but could not be issued.
  400.  
  401.     3.2.1.1.3 Preferred-message-size and Maximum-record-size The Init
  402. request contains Preferred- message-size and Maximum-record-size, specified
  403. in bytes.  Maximum-record-size must be greater than or equal to
  404. preferred-message-size.  The Init response contains both the
  405. Preferred-message-size and Maximum-Record-size that the target is going to
  406. use.
  407.  
  408.     The target has the option of responding with values different from
  409. those requested by the origin (however, Preferred-message-size must be less
  410. than or equal to Maximum-record-size), in which case, the origin may abort
  411. the connection if those values are not acceptable. The usage of these
  412. parameters is specified in section 3.3
  413.  
  414. 3.2.1.1.4 Result The target indicates whether or not it accepts the
  415. association by specifying a value of "accept" or "reject" respectively in
  416. the parameter Result.  If "reject" is indicated, the origin is expected to
  417. terminate communication.
  418.  
  419. 3.2.1.1.5 User-information-field This field may be used by either the
  420. origin or target for additional information, not specified by this
  421. standard.
  422.  
  423. 3.2.1.1.6  Reference-id See section 3.4
  424.  
  425.  
  426. 3.2.2  Search Facility  
  427.  
  428.     The Search facility enables an origin system to query databases at a
  429. target system, and to receive information about the results of the query.
  430.   3.2.2.1 Search Service The Search service allows an origin to send a
  431. query to a target. The basic query concept is: "from the specified set of
  432. items, identify those with the properties indicated."  The set of items
  433. identified is called the "result set", and is maintained by the target for
  434. subsequent retrieval requests.  However, depending on the parameters of the
  435. search, one or more items identified by the result set may be immediately
  436. returned as part of the search response.  The result set is an ordered set;
  437. items identified by entries in the result set are referenced by the
  438. position of the entry within the result set, beginning with one (1).
  439. ________________________________________________________________________
  440.                                       ORIGIN          TARGET
  441.    PARAMETER                          REQUEST         RESPONSE
  442.       Query-type                      x
  443.       Query                           x 
  444.       Database-names                  x
  445.       Result-set-name                 x 
  446.       Replace-indicator               x
  447.       Small-set-element-set-names     x (optional)
  448.       medium-set-element-set-names    x (optional)
  449.       preferred-record-syntax         x (optional)
  450.       Small-set-upper-bound           x 
  451.       Large-set-lower-bound           x
  452.       Medium-set-present-number       x 
  453.       Database/diagnostic-records                      x (if applicable)
  454.       Result-count                                     x 
  455.       Number-of-records-returned                       x 
  456.       Next-result-set-position                         x 
  457.       Search-status                                    x 
  458.       Result-set-status                                x (if applicable)
  459.       Present-status                                   x (if applicable)
  460.       Reference-id                    x (optional)     x (if applicable)
  461. ________________________________________________________________________ 
  462.  
  463. 3.2.2.1.1 Query-type and Query The parameter Query-type identifies the
  464. syntax of the query. As noted above, the basic query concept is "from the
  465. specified set of items, identify those with the properties indicated."  The
  466. "specified set of items" is a collection of one or more databases,
  467. specified by the parameter database-names.  The "properties indicated" are
  468. specified by the parameter Query.
  469.  
  470.     The remainder of this clause specifies procedures when Query-type is 1,
  471. 'RPN-query'.
  472.  
  473.     The RPN query has the following structure:
  474.  
  475.                   RPN-query ::= argument | argument + argument + operator
  476.                   argument       ::=  operand | RPN-query
  477.                   operand        ::=  attribute-set + term | Result-set-id
  478.                   operator       ::=  AND | OR | AND-NOT
  479.  
  480. Where       ::=   means "is defined as", 
  481.             |     means  "or", 
  482.             +     means  "followed by", and + has precedence over |
  483.           (i.e., + is evaluated before |).  
  484.  
  485.       NOTES
  486.       1.    "RPN-query" is recursively defined; it is either
  487.                a) "operand" , or  
  488.                b) "argument + argument + operator".   
  489.  
  490.             In case (b), each occurrence of "argument" can be replaced by
  491. either (a) or (b) and so on.
  492.   
  493.             A structure composed of operators and operands conforms to the
  494. Type-1 query syntax if and only if it is possible, by repeatedly replacing
  495. occurrences of (b) with (a), to reduce the structure to (a).
  496.       2.  "operand" is either (a) attributes-set + term, or (b)
  497. Result-set-id.  In either case it
  498.             represents a set of database records.  For (a) it is the set of
  499. database records obtained by evaluating the specified attribute-set and
  500. term against the collection of databases specified in the Search request
  501. (see NOTE 3).  For (b) it is the set of database records represented by the
  502. result set for which Result-set-id was specified as the value of the
  503. parameter Result-set-name in a previous Search request.
  504.       3.  Different attribute sets will be defined and registered (Appendix
  505. C defines and registers attribute-set bib-1).  An example of an
  506. attribute-set/term combination is 'title word'/ 'evangeline'; in this case,
  507. evaluation of attribute-set/term against a database would result in the
  508. identification of all of the records in the database for which the access
  509. point 'title word' contains the value 'evangeline'.
  510.  
  511. Representation and Evaluation of the Type-1 Query
  512.  
  513.       At the origin system, the Type-1 query is represented by a tree.
  514. Each leaf node contains a simple operand and each non-leaf node contains a
  515. complex operand. A simple operand is either a Result-set- id or an
  516. Attribute-set+Term.  A complex operand is a subtree whose root is an
  517. operator and which contains two subtrees: a left-hand operand and a
  518. right-hand operand, LO and RO. A complex operand is thus one of the
  519. following:
  520.  
  521.       -  LO AND RO, represnting the intersection of LO and RO;
  522.       -  LO OR RO, rperesenting the union of LO and RO; or
  523.       -  LO AND-NOT RO, representing the set of elements in LO that are not
  524.          in RO.  
  525.  
  526.       At the target, evaluation of the tree is illustrated by the use of a
  527.       stack. The tree is processed according to a left post-order
  528.       traversal.  Each leaf-node is one of the following:  
  529.  
  530.       a)    Attribute-set + Term 
  531.       b)    Result-set-id 
  532.       c)    Operator
  533.  
  534. Whenever (a) is encountered, it is evaluated against the collection of
  535. databases specified in the Search request, and the result is put on the
  536. stack.  Whenever (b) is encountered, it is put on the stack.
  537.  
  538. Whenever (c) is encountered, the last two items (i.e. sets, see NOTE 2
  539. above) that have been put on the stack are pulled off and the operator is
  540. applied as follows:
  541.  
  542.       -  if operator is AND, the result is the intersection of the two sets, 
  543.       -  if operator is OR, the result is the union of the two sets, 
  544.       -  if operator is AND-NOT, the result is the set of elements in the
  545. first set (i.e., the first of the two sets to have been placed on the
  546. stack) which are not in the second set.
  547.  
  548. The resulting set is then put on the stack.  
  549.  
  550. When evaluation of the query is complete (i.e. all query-terms have been
  551. processed) there will be one item remaining on the stack (otherwise the
  552. query is in error) which is the result of the query.
  553.  
  554.       The following examples illustrate query evaluation.  In these
  555. examples, D represents the collection of databases specified in the Search
  556. request, R represents a Result-set-id, and A, B, and C represent
  557. attribute-list/term combinations such as "subject = dogs".
  558.  
  559.  1.   Query  =   A      
  560.             Result:     the records in D for which A is true 
  561.  2.   Query  =  A  B  C  AND  OR 
  562.             Result:     the records in D for which both B and C are true,
  563.             or A is true  
  564.  3.   Query  =  A  B  AND  C  OR
  565.             Result: the records in D for which both A and B are true, or C
  566.             is true 
  567.  4.   Query  =   R  A  AND 
  568.             Result:     the records in D for which both (1) A is true, and
  569.             (2) which are also in result set 
  570.                         R
  571.  5.    Query  =   R  A  OR 
  572.             Result:     the records in  D for which A is true, together
  573.             with records in R 
  574.  
  575.  
  576. 3.2.2.1.1.a Database-name The target designates, by agreement outside the
  577. scope of the standard, what databases may be specified on a Search request,
  578. and also in what combinations they may be specified.  For example, a target
  579. might specify that databases A, B, and C, may be searched individually, and
  580. that A and B may be searched in combination (but not A and C, nor B and C).
  581. If an origin requests a combination of databases which is not supported,
  582. the search will result in a diagnostic such as "combination of specified
  583. databases not supported" (see appendix D).
  584.  
  585. 3.2.2.1.2 Result-set-name and Replace-indicator The parameter
  586. Result-set-name specifies a name to be given to the result set which will
  587. be created by the query so that it may be subsequently referenced within
  588. the same association.  If a result set with the same name already exists at
  589. the target, then the action taken depends on the value of the parameter
  590. Replace-indicator, as follows:
  591.  
  592.      - If the value of Replace-indicator is "on", then prior to processing
  593. the query, the existing result set whose name is specified by the parameter
  594. Result-set-name will be deleted, and a new result set by that name created.
  595. The initial content of the result set is null.
  596.  
  597.      - If the value of Replace-indicator is "off", the search is not
  598. processed, an error diagnostic is returned by the target, and the existing
  599. result set whose name is specified by the parameter Result-set-name is left
  600. unchanged.
  601.  
  602.     If a result set does not exist with the name specified by the parameter
  603. Result-set-name, then a result set by that name is created by the target,
  604. and the parameter Replace-indicator is ignored.  The initial content of the
  605. result set is null.  If no records are found by the query, the result set
  606. remains null.
  607.  
  608.     A target system need not support, in general, the naming of result sets
  609. by the origin (see however section 4.4.3, "Statement Requirements" for
  610. Conformance).  However, a target system must support at least the result
  611. set whose name is "default". If the origin specifies "default" as
  612. Result-set-name, then Replace-indicator must be "on".
  613.  
  614.     A result set which is created by a Search request (that is, specified
  615. by the parameter Result-set-name) may be referenced in a subsequent Present
  616. request or as an operand in a subsequent Search request (for example, in a
  617. Type-1 query).  If a result set named "default" is created, it remains
  618. available for reference from the time it is created until the end of the
  619. association during which it is created, or until either:
  620.  
  621.       - another "default" result set is created, because the name "default"
  622. is specified as Result-set-name in a subsequent Search request, or
  623.  
  624.       -    it is unilaterally erased or deleted by the target.
  625.     
  626.     Any result set other than the result set named "default" remains
  627. available for reference from the time it is created until it is deleted in
  628. one of the following ways:
  629.     
  630.       -    by a Delete request 
  631.       -    implicitly, because a result set was specified by the same name
  632.        in a Search request, and the 
  633.            value of the parameter Replace-indicator was "on"
  634.       -    unilaterally by the target (at any time)
  635.       -    by termination of the association.
  636.  
  637. 3.2.2.1.3 Small-set-element-set-names and Medium-set-element-set-names An
  638. element set name is a primitive name which specifies a particular subset of
  639. the elements in a database record which are to compose the response
  640. records.  The specified subset is made up of components of the
  641. abstract-syntax description of the database records and is, therefore, a
  642. formal subset of that abstract-syntax-definition.  Element set names are
  643. specified, along with their definitions, for a given database, by the
  644. target, outside of this standard.  The target specifies a default element
  645. set for each database.
  646.  
  647.     The parameters Small-set-element-set-names and
  648. Medium-set-element-set-names describe the preferred record composition of
  649. the records expected in the search response.  If the query results in a
  650. small-set (see 3.2.2.1.4), then Small-set-record-element-set-names
  651. pertains.  If the query results in a medium-set, then
  652. Medium-set-record-element-set-names pertains.
  653.  
  654.     Each of the two parameters is a set of one or more pairs of a database
  655. name and associated element set name.  For each database record returned in
  656. a Search (or Present) response, if the given database is specified (as a
  657. component of one of the pairs comprising the pertaining element set name)
  658. then the response record should be composed according to the corresponding
  659. element set name.  If not, the response record should be composed according
  660. to the default element set name for that database. If a record composition
  661. name is specified which is not valid for the corresponding database, then
  662. the Search Response APDU will include a diagnostic, such as "record
  663. composition name not valid for database", and the value of the parameter
  664. Search-Status will be "failure".
  665.  
  666.     Each of the two parameters may alternatively consist of a single
  667. element set name (from those defined by the target system), with no
  668. database specified.  In that case, for each database record returned in a
  669. Search (or Present) response:
  670.  
  671.      -  if the specified element set name is valid for the given
  672.     database, the response-record should  be composed according to
  673.     that element set name;  
  674.      -  if the specified element set name is not valid for the given
  675.     database, the response-record  should be composed according to
  676.     the default element set name for that database. 
  677.  
  678. A target system must always recognize the character string "F" as an
  679. element set name to mean "full record".  When a "full record" is requested,
  680. the target returns all of the elements stored in its database for the
  681. requested record.  For a given record, the set of elements included in a
  682. "full record" in one database might not be the same set of elements
  683. included in a "full record" in another database.  (The target may use "F"
  684. as the default element set name.)
  685.  
  686. 3.2.2.1.3a Preferred-record-syntax The parameter Preferred-record-syntax
  687. identifies the preferred abstract syntax for the records to be returned,
  688. from among the set of abstract syntaxes for records for which presentation
  689. contexts are currently established for this application association.  If
  690. the target cannot supply the information in the requested abstract syntax,
  691. it will supply it in one of the other abstract syntaxes from the
  692. established set.
  693.  
  694. 3.2.2.1.4 Small-set-upper-bound, Large-set-lower-bound, and
  695. Medium-set-present-number The number of database records identified by the
  696. result set is referred to as the result-count.  The result set is
  697. considered either a "small-set", a "medium-set", or a "large-set",
  698. depending on the result-count and the parameters of the search.  The result
  699. set is a small-set if Result-count is not greater than
  700. small-set-upper-bound.  The result set is a large-set if Result-count is
  701. larger than or equal to Large-set-lower-bound. Otherwise, the result set is
  702. a medium-set.
  703.  
  704.     If the query results in a small-set, all database records identified by
  705. the result set are to be returned to the origin (subject to possible
  706. message size constraints). If the query results in a large-set, no database
  707. records are to be returned.  If the query results in a medium-set, the
  708. maximum number of database records to be returned is specified by
  709. Medium-set-present-number.
  710.  
  711. Notes:   (1)        The result set may be a medium-set only when
  712. Result-count is greater than small-set-upper-bound and less than
  713. Large-set-lower-bound, and this can only occur if Large- set-lower-bound is
  714. at least 2 greater than Small-set-lower-bound; i.e., the result set cannot
  715. be a medium-set if Large-set-lower-bound exceeds Small-set-upper bound by
  716. one. For example, if Large-set-lower-bound is 11 and Small-set-upper-bound
  717. is 10, the intent is "if 10 or less records are found return them all,
  718. otherwise do not return any"; and medium-set-present-number would not apply.
  719.           (2)       Small-set-upper-bound may be zero.
  720. Large-set-upper-bound must be greater than Small-set-upper-bound.
  721.           (3)       If the origin does not want any records returned in the
  722. response regardless of the value of Result-cound, Larger-set-lower-bound
  723. should be set to 1 and Small-set-upper-bound to zero. 
  724.  
  725. 3.2.2.1.5 Database/diagnostic-records The target processes the search,
  726. creating a result set which identifies a set of database records.  It
  727. cannot be assumed however that search processing requires physical access
  728. to the database records; thus one or more records might not be returnable,
  729. but this circumstance might not be recognized until an attempt is made to
  730. transfer such a record.
  731.  
  732.     After processing the search, the target attempts to retrieve the first
  733. N records identified by the result set, to be included in the Search
  734. response (N depends on the search parameters and result-count, as described
  735. in 3.2.2.1.4). For each record which cannot be returned, a surrogate
  736. diagnostic record is substituted.  Thus the parameter
  737. Database/diagnostic-records is one of the following:
  738.  
  739.     -   N database and/or diagnostic records, 
  740.     -   a number of database and/or diagnostic records, which is less than
  741.     N because of message size constraints (see 3.3),
  742.     -   a single non-surrogate diagnostic record indicating that the search
  743.     cannot be processed, and why it cannot be processed, or
  744.     -   a single non-surrogate diagnostic record indicating that records
  745.     cannot be presented, and why not ", e.g. record composition name
  746.     not valid for database". 
  747.  
  748.     The order of occurrence of records (database and/or surrogate
  749. diagnostic) within the parameter Database/diagnostic-records is according
  750. to the order in which they are identified by the result set.  Each database
  751. or surrogate diagnostic record may optionally be accompanied by the name of
  752. the database in which the record resides.  However, the database name must
  753. accompany the first database or surrogate diagnostic record being returned,
  754. and must accompany any record coming from a database different than its
  755. immediate predecessor.
  756.  
  757. 3.2.2.1.6 Result-count and Number-of-records-returned The parameter
  758. Result-count is the number of records identified by the result set.  If the
  759. result set is empty, result-count is zero.  The parameter
  760. Number-of-records-returned is the total number of records (database and
  761. diagnostic) returned in the Search response.
  762.  
  763. 3.2.2.1.7 Next-result-set-position The parameter Next-result-set-position
  764. specifies the position within the result set of the next record following
  765. those returned (or zero if the last record in the result set is being
  766. returned).
  767.  
  768. 3.2.2.1.8 Search-status The parameter Search-status is returned in the
  769. response and assumes one of the following two values:
  770.  
  771.     success -       the search completed successfully
  772.     failure -       the search did not complete successfully
  773.     A value of "success" does not imply that the expected database and/or
  774. surrogate diagnostic records are being returned as part of the response
  775. (see Present-status, 3.2.2.1.9). Note also, a value of "success" does not
  776. imply that any records were located by the search.  A value of "failure"
  777. does imply that none of the expected database and/or surrogate diagnostic
  778. records is being returned.  In the latter case, the target returns a single
  779. diagnostic record indicating that the search cannot be processed.
  780.  
  781.  3.2.2.1.9 Result-set-status and Present-status These are status
  782. descriptors necessary to dissambiguate certain situations that can occur
  783. during search and present operations.
  784.  
  785.     Result-set-status occurs if and only if the value of Search-status is
  786. "failure", and its value is one of the following:
  787.     subset     -  Partial, valid results available.
  788.     interim    -  Partial results available, not necessary valid.
  789.     none       -  No results available (result set is null).
  790.     Present-status occurs if and only if the value of Search-status is
  791. "success", and its value is one of the following:
  792.     success    -  All of the expected database (or surrogate diagnostic)
  793.           records are available. 
  794.     partial-1  -  Not all of the expected records can be returned because
  795.           the request was terminated by access-control.
  796.     partial-2  -  Not all of the expected records can be returned because
  797.           the request was terminated by maximum message size.
  798.     partial-3  -  Not all of the expected records can be returned because
  799.           the request was terminated by resource-control at origin.
  800.     partial-4  -  Not all of the expected records can be returned because
  801.           the request was terminated by resource-control at target.
  802.     failure    -  None of the expected database (or surrogate diagnostic)
  803.           records can be returned.  A single diagnostic is
  804.           returned, which is not a surrogate for a database record.
  805.  
  806. 3.2.2.1.10  Reference-id  See section 3.4 
  807.  
  808.  
  809. 3.2.3  Retrieval Facility 
  810.  
  811.     The Retrieval facility enables the origin to retrieve a copy of records
  812. according to position within a result set maintained by the target.
  813.  
  814. 3.2.3.1 Present Service The Present service allows the origin system to
  815. retrieve records from a specified result set.  Records are referenced by
  816. relative position within the result set.  The origin specifies a range of
  817. records to be retrieved and may follow with subsequent requests specifying
  818. different ranges.  For example, the origin may retrieve records one through
  819. five and follow with a request for records four through six.
  820. ________________________________________________________________________
  821.                                 ORIGIN             TARGET 
  822.  PARAMETER                      REQUEST            RESPONSE
  823.  Number-of-records-requested    x 
  824.  Result-set-start-position      x 
  825.  Result-set-id                  x 
  826.  Element-set-names              x (optional)
  827.  Preferred-record-syntax        x (optional)
  828.  Database/diagnostic-records                       x (if applicable) 
  829.  Number-of-records-returned                        x
  830.  Next-result-set-position                          x      
  831.  Present-status                                    x 
  832.  Reference-id                   x (optional)       x (if applicable)
  833. ________________________________________________________________________ 
  834.  
  835. 3.2.3.1.1 Number-of-records-requested and Result-set-start-position The
  836. origin requests the return of N records beginning at record M, from the
  837. result set, where N = Number-of-records-requested and M = Result-set-start-
  838. position (and N is not greater than Result-count - M + 1).
  839.  
  840. 3.2.3.1.2 Result-set-id Result-set-id specifies the result set from which
  841. records are to be retrieved.  It is the result set created by a previous
  842. Search request for which the value of the parameter Result- set-name
  843. matches the value of Result-set-id.
  844.  
  845. 3.2.3.1.3 Element-set-names The parameter Element-set-names describes the
  846. preferred record composition of the records expected in the Present
  847. response. See section 3.2.2.1.3.
  848.  
  849. 3.2.3.1.4  Preferred-record-syntax  See section 3.2.2.1.3.
  850.  
  851. 3.2.3.1.5 Database/diagnostic-records The parameter
  852. Database/diagnostic-records returned by the target consists of one of the
  853. following:
  854.   - N database and/or diagnostic records, where N = Number-of-records-requested,
  855.   - a number of database and/or diagnostic records, which is less than N
  856.     (reason  specified by Present-status), or
  857.   - a single diagnostic record indicating that the request cannot be
  858.     processed, and why it cannot be processed. 
  859.  
  860.     The order of occurrence of records (database and/or surrogate
  861. diagnostic) within the parameter Database/diagnostic-records is according
  862. to the order in which they are identified by the result set.  Each database
  863. and/or surrogate diagnostic record may optionally be accompanied by the
  864. name of the database in which the record resides.  However, the database
  865. name must accompany the first record being returned, and must accompany any
  866. record coming from a database different than its immediate predecessor.
  867.  
  868. 3.2.3.1.6 Number-of-records-returned and Next-result-set-position The
  869. parameter Number-of-records-returned is the total number of database and
  870. diagnostic records returned.  Next-result-set-position is the position
  871. within the result set of the next record following the last database or
  872. surrogate diagnostic record being returned (or zero, if the last database
  873. or surrogate diagnostic record in the result set is being returned).
  874.  
  875. 3.2.3.1.7 Present-status Present-status is mandatory in a Present response
  876. and its values are the same as those listed for Present-status in
  877. 3.2.2.1.9.
  878.  
  879. 3.2.3.1.8 Reference-id  See section 3.4
  880.  
  881.  
  882. 3.2.4  Result-set-delete Facility  
  883.  
  884.     The Result-set-delete facility enables an origin system to instruct a
  885. target system to delete one or more result sets known to the target system.
  886. The target system responds with information pertaining to the result of the
  887. operation.
  888.  
  889. 3.2.4.1 Delete Service Element
  890.  
  891.     The Delete service element enables an origin system to send a Delete
  892. request to the target.  The origin system may request deletion of specified
  893. result sets held by the target system, or all result sets currently on the
  894. target system created during this association.  The target responds by
  895. reporting the status of the requested delete operation.
  896. ________________________________________________________________________
  897.                               ORIGIN                 TARGET 
  898.            PARAMETER          REQUEST                RESPONSE
  899.     Delete-operation          x
  900.     Result-set-list           x (if applicable)
  901.     Delete-status                                    x
  902.     List-statuses                                    x (if applicable)
  903.     Number-not-deleted                               x (if applicable)
  904.     Bulk-statuses                                    x (if applicable)
  905.     Delete-msg                                       x (optional)
  906.     Reference-id              x (optional)           x (if applicable)
  907. ________________________________________________________________________ 
  908.  
  909. 3.2.4.1.1 Delete-operation The origin specifies one of the following:
  910.      list - delete one or more specified result sets (see 3.2.4.1.2), or
  911.      Bulk-delete - delete all result sets currently on the target system
  912. created during this association.
  913.  
  914. 3.2.4.1.2 Result-set-list If Delete-operation is "list", then the parameter
  915. Result-set-list must be present, and specifies a list of result sets to be
  916. deleted, each of which was created by a previous Search request for which
  917. the value of the parameter Result-set-name matches the value of one of the
  918. members of the list.  If Delete-operation is "Bulk-delete", then the
  919. parameter Result-set-list must not be present.
  920.  
  921. 3.2.4.1.3 Delete-status Delete-status is used by the target to report the
  922. status of the delete request.  It assumes one of the values "success" or
  923. "failure-3" through "failure-9" in table 3.2.4-1.
  924.  
  925. 3.2.4.1.4 List-statuses
  926.  
  927.     List-statuses is present in a Delete response for a list operation. It
  928. contains the same Result-set-id(s) contained in the Result-set-list
  929. parameter of the corresponding Delete request.  Each result-set-id in the
  930. List-statuses parameter is paired with a status.  Possible status values
  931. are "success" and "failure-1" through "failure-6" in table 3.2.4-1.
  932.  
  933. _______________Table 3.2.4-1___________________________________
  934.   success    -  Result set(s) deleted.
  935.   failure-1  -  Result set did not exist.
  936.   failure-2  -  Result set previously unilaterally deleted by target.
  937.   failure-3  -  System problem at target (optional text message may be
  938.         included in the Delete-msg parameter).
  939.   failure-4  -  Access-control failure: the delete request caused the
  940.         target system to issue an Access-control request which the
  941.         origin system failed to satisfy, or the origin could not
  942.         accept an Access-control request. 
  943.   failure-5  -  Request terminated by origin system through resource control.
  944.   failure-6  -  Access terminated by target system due to resource constraints.
  945.   failure-7  -  Bulk delete of result sets not supported by target.
  946.   failure-8  -  Not all result sets deleted (on a bulk delete request)
  947.         (see 3.2.4.1.4).
  948.   failure-9  -  Not all requested result sets deleted.
  949.           Note: failure-7 and failure-8 can occur only if Delete-operation
  950.         is Bulk-delete. 
  951. ________________________________________________________________
  952.  
  953. 3.2.4.1.4 Number-not-deleted and Bulk-statuses These two parameters occur
  954. only if Delete-operation is Bulk-delete and if Delete-status = "failure-8".
  955. The parameter Number-not-deleted indicates how many result sets were not
  956. deleted, and the parameter Bulk-statuses gives individual statuses for
  957. those not deleted.
  958.  
  959.     Note, however, that a target system is not obligated to provide
  960. statuses for each result set not deleted on a bulk delete.  For example, a
  961. target system may abort a bulk delete when the first failure to delete a
  962. result set that is part of the bulk delete fails; in this case only a
  963. single status might be included in the parameter Bulk-statuses.
  964.  
  965.     If a bulk delete results in more statuses than can fit into a single
  966. Delete-response message, the target system may discard those which do not
  967. fit.
  968.  
  969. 3.2.4.1.5 Delete-msg Delete-msg, if present, contains an optional text message. 
  970.  
  971. 3.2.4.1.6 Reference-id  See section 3.4 
  972.  
  973. 3.2.5  Access Control Facility
  974.  
  975.     The Access-control facility allows a target system to challenge an
  976. origin system during execution of an Init, Search, Present, or Delete
  977. operation.
  978.  
  979.     An origin system must be prepared to accept and respond to one or more
  980. Access-control requests while an Init, Search, Present, or Delete request
  981. is being executed by the target system (unless the parameter Options of the
  982. Init request which initiated the connection did not include Access-control;
  983. see 3.2.1.1.2).  For example, after sending a Search request, the origin
  984. must be prepared to receive an Access-control request, respond with an
  985. Access-control response, then later receive another Access- control
  986. request, etc., before receiving a Search response.
  987.  
  988.     Once the origin has responded, the operation proceeds as if the
  989. challenge has never taken place.  If the origin system fails to respond
  990. correctly to the challenge during a Search, Present, or Delete request,
  991. then the Search, Present, or Delete response may indicate that the
  992. operation was terminated due to an Access-control failure.  (Note: During a
  993. Search or Present operation, while the target is preparing records for
  994. presentation, it might send an Access Control request pertaining to a
  995. particular record. If the origin fails to respond correctly to the
  996. challenge, the target may simply substitute a surrogate diagnostic:
  997. "security challenge failed; record not included".) If the origin system
  998. fails to respond correctly to the challenge during an Init request, the
  999. target may set the Result parameter to "reject" and may (optionally) supply
  1000. such an indication in the User-information-field of the Init response.
  1001.  
  1002.     The Access-control request/response mechanism can be used to support
  1003. password challenges, public key cryptosystems, or algorithmic
  1004. authentication, etc.  The specific content of the Access-control request
  1005. and response parameters are outside the scope of this standard.
  1006.                                                                                                            
  1007. 3.2.5.1 Access-control Service 
  1008. ________________________________________________________________________
  1009.                                      TARGET               ORIGIN 
  1010.     PARAMETER                        REQUEST              RESPONSE
  1011.     Security-challenge               x                
  1012.     Security-challenge-response                           x
  1013.     Reference-id                     x (if applicable)    x (if applicable)
  1014. ________________________________________________________________________
  1015.  
  1016. 3.2.5.1.1 Security-challenge and Security-challenge-response The contents
  1017. of these two parameters are outside the scope of this standard and must be
  1018. established by prior agreement between a given target/origin system pair.
  1019.  
  1020. 3.2.5.1.2 Reference-id  See section 3.4.  
  1021.  
  1022.  
  1023. 3.2.6 Accounting/Resource Control Facility
  1024.  
  1025.     The Accounting/resource Control facility permits the target system to
  1026. notify the origin system when either actual or predicted resource
  1027. consumption will exceed agreed upon limits (or limits built into the target
  1028. system), and to obtain the origin system's consent to continue.  In
  1029. addition, the target system can inform the origin system about the current
  1030. status of a result set being generated on the target in response to a
  1031. Search request, and indicate information about the status of the current
  1032. request to the origin.
  1033.  
  1034.  
  1035. 3.2.6.1 Resource-control Service   
  1036.  
  1037.     A target system may issue a Resource-control request in response to an
  1038. Init, Search, Delete, or Present request.  The origin system must respond
  1039. to the Resource-control request, after which processing continues (from the
  1040. point of view of message sequencing) as if the request/response sequence
  1041. never occured.  An origin should be prepared to respond to multiple
  1042. Resource-control requests during the execution of an Init, Search, Delete
  1043. or Present request.
  1044.  
  1045.     If the origin responds to a Resource-control request with a
  1046. Resource-control response saying to terminate the command, it can expect to
  1047. receive an Init, Search, Present or Delete response.  This response might
  1048. indicate that the request was terminated at origin request.  However, the
  1049. response might alternately indicate that the request completed, since the
  1050. operation at the target system may continue to execute and subsequently
  1051. complete before the Resource-control response reaches the target system.
  1052. ________________________________________________________________________
  1053.                                   TARGET                 ORIGIN 
  1054.     PARAMETER                     REQUEST                RESPONSE
  1055.  
  1056.     Resource-report               x (optional)
  1057.     Suspended-flag                x 
  1058.     Partial-results-available     x (if applicable)
  1059.     Continue-flag                                        x
  1060.     Result-set-wanted                                    x (if applicable)
  1061.     reference-id                  x (if applicable)      x (if applicable)
  1062. ________________________________________________________________________
  1063.  
  1064. 3.2.6.1.1 Resource-report Resource-report may be used to convey information
  1065. about the current and estimated resource consumption at the target system.
  1066. The format of Resource-report bib-1 is defined in Appendix F.
  1067.  
  1068. 3.2.6.1.2 Partial-results-available The target indicates the status of the
  1069. result set via the flag Partial- results-available, whose value is one of
  1070. the following:
  1071.      subset        - Partial, valid results available.
  1072.      interim       - Partial results available, not necessary valid.
  1073.      none          - No results available.
  1074.  
  1075.     This parameter is meaningful only during a search operation.  If its
  1076. value is "subset" or "interim", then the target will accept subsequent
  1077. Present requests if the current request is terminated by the
  1078. Resource-control response, and if the value of the parameter
  1079. Result-set-wanted is "on".
  1080.  
  1081.     If the value of Partial-results-available is "none" then the target
  1082. need not accept subsequent Present requests in the event that the request
  1083. is terminated by the Resource-control response.
  1084.  
  1085.     Note that if Suspended-flag is off, the partial results available
  1086. situation may change since processing continues on the search.  In all
  1087. cases, the values of Search-status and Result-set-status in the Search
  1088. response should be treated as the authoritative information.
  1089.  
  1090. 3.2.6.1.3 Suspended-flag The target system indicates whether or not
  1091. processing of the command has been suspended pending the Resource-control
  1092. response.
  1093.  
  1094. 3.2.6.1.4 Continue-flag The origin indicates to the target whether or not
  1095. to continue processing.
  1096.  
  1097.  
  1098. 3.2.6.1.5  Result-set-wanted  This flag  is meaningful only:
  1099.            -        during a Search request, 
  1100.            - when the value of Partial-results-available is "subset" or
  1101.          "interim", and
  1102.            - when the value of the parameter Continue-flag is "do not
  1103.          continue".
  1104.  
  1105.      If the value of the flag is "on", the target will maintain the
  1106. (possibly partial) result set for subsequent Present requests.  If the
  1107. value of the flag is "off", the target may delete the result set.  A result
  1108. set status of "none" on the subsequent Search response indicates that the
  1109. target has discarded the result set.  In all cases, the values of
  1110. Search-status and Result-set-status in the Search response describe the
  1111. actual decisions made by the target system and the way in which the search
  1112. terminated.
  1113.  
  1114. 3.2.6.1.6    Reference-id  See section 3.4.  
  1115.  
  1116.  
  1117. 3.2.7  Termination Facility
  1118.            The Termination Facility allows either:
  1119.     (1)    an origin or target to initiate abrupt termination of the
  1120.        association via the IR-abort service element, or 
  1121.     (2)    an origin system to initiate graceful termination via the
  1122.        IR-release service.
  1123.  
  1124.     Both the IR-abort and IR-release services map directly onto the A-ABORT
  1125. and A-RELEASE services of the association control service element.
  1126.  
  1127.  
  1128. 3.2.7.1  IR-abort Service 
  1129.     Either the origin or target may at any time either send or receive an
  1130. IR-abort request, and consider the application association terminated.
  1131.  
  1132. 3.2.7.2  IR-Release Service 
  1133.     The origin may invoke an IR-release request following receipt of an
  1134. Init, Search, Present, or Delete response.  It should then await receipt of
  1135. an IR-Release response, and then consider the association terminated.
  1136. Alternately, it might receive an IR-abort request from the target, in which
  1137. case it should consider the application association terminated.
  1138.  
  1139.     The target may receive an IR-release request after sending an Init,
  1140. Search, Present, or Delete response, or a Resource-control or
  1141. Access-control request. It should then send an IR-release response, and
  1142. consider the association terminated.
  1143.  
  1144. 3.3   MESSAGE SIZE  LIMITATIONS 
  1145.            
  1146.     For both the Search and Present services, it is possible that the
  1147. target will not be able to return the number of database records requested
  1148. because of message size limitations.  In that case, the target is
  1149. responsible for packing as many records as possible into the response
  1150. message.  (Note: A response message always contains an integral number of
  1151. records; a record never spans response messages.)
  1152.  
  1153. Illustration
  1154.     Assume that the target is attempting to transmit records in result set
  1155. positions 1 through 10 (in this section, the term "record" means "database
  1156. or surrogate diagnostic record", unless "diagnostic record" or "database
  1157. record" is specified).  Assume further that:
  1158.  
  1159.     o records in position 1 through 6 fit in the response message, such
  1160. that the sum of the sizes of the records (not including any protocol
  1161. control information) does not exceed Preferred-message-size; but,
  1162.     o the database record in position 7 will not fit in the message along
  1163. with records in position 1 through 6 without the resulting sum of the
  1164. message sizes exceeding Preferred-message-size.
  1165.            
  1166.  
  1167.     The size of the database record in position 7:
  1168.      (a)   does not exceed Preferred-message-size, or
  1169.      (b)   exceeds Preferred-message-size, but does not exceed
  1170.            Maximum-record-size, or 
  1171.      (c)   exceeds Maximum-record-size.
  1172.     
  1173.     In case (a), the target returns records in position 1 through 6.       
  1174.  
  1175.     In case (b), except as noted below (see "Exception"), the target
  1176. substitutes a diagnostic record for the database record in position 7,
  1177. indicating that the record exceeds Preferred-message-size.  In case (c) the
  1178. target substitutes a diagnostic record for the database record in position
  1179. 7, indicating that the record exceeds Maximum-record-size.  (If
  1180. Maximum-record-size equals Preferred-message-size then there is no
  1181. distinction between the meaning of the two diagnostics.)
  1182.  
  1183.     In case (b) or (c) if the diagnostic record will not fit along with the
  1184. records in position 1 through 6, the target returns the records in position
  1185. 1 through 6.  (Preferred-message-size must always be large enough to
  1186. contain any diagnostic record; thus a subsequent present request beginning
  1187. with the record in position 7 will retrieve the diagnostic.)  Otherwise,
  1188. the target inserts the diagnostic record and proceeds to attempt to fit
  1189. records in positions 8 through 10 into the response message.
  1190.  
  1191. Exception
  1192.     If a Present request specifies a single record (i.e.
  1193. Number-of-records-requested equals 1) then if the size of that record
  1194. exceeds Preferred-message-size, but does not exceed Maximum-record-size,
  1195. the target will return that single database record in the Present response.
  1196. Note that this exception applies only to a Present request and not to a
  1197. Search request.
  1198.  
  1199.     Thus in case (b), the origin may subsequently request the database
  1200. record in position 7, by issuing a Present request in which that record is
  1201. the only record requested.
  1202.  
  1203.     Note that the purpose of this distinction between
  1204. Preferred-message-size and Maximum-record-size is to allow the transfer of
  1205. normal length records to proceed in a routine fashion, with convenient
  1206. buffer sizes, but to also provide for the transfer of an occasional
  1207. exceptionally large database record without requiring the origin to
  1208. continually allocate and hold local buffer space for worst-case records.
  1209. Note also that this intended purpose is defeated if the origin routinely
  1210. requests a single record.
  1211.  
  1212.  
  1213. 3.4  RERERENCE-ID
  1214.    The parameter Reference-id, is optional in an Init, Search, Present, and
  1215. Delete request.  If supplied,  
  1216.  
  1217.      -  it must be echoed by the target in the respective response,
  1218.      -  it must be echoed in both the request and response of any
  1219.     intermediate Access-control or Resource-control request/response
  1220.     sequences.  
  1221.  
  1222.     If Reference-id is not supplied in an Init, Search, Present, or Delete
  1223. request, then it is not to appear in the respective response, nor in either
  1224. the request or response of any intermediate Access-control or
  1225. Resource-control request/response sequence.
  1226.  
  1227.     The service does not assume any relationship between the Reference-id
  1228. used in an Init, Search, Present, or Delete request and the Reference-id
  1229. used in any other Init, Search, Present, or Delete request.
  1230.  
  1231.     The purpose of this parameter is to facilitate the grouping of events
  1232. by the origin system. This standard does not specify its contents.
  1233. Reference-ids are always assigned by the origin and have meaning only
  1234. within the origin system.  Since there are no semantics attributed to this
  1235. parameter, it has no implied datatype and can only be described as
  1236. transparent binary data.  It is therefore described as ASN.1 type
  1237. OCTETSTRING).
  1238.  
  1239. 4.  PROTOCOL SPECIFICATION
  1240.  
  1241.     This version of the ANSI Z39.50-1991 Information Retrieval protocol is
  1242. version 2.  (Note: Version 2 is identical to version 1, and implementations
  1243. which support version 2 automatically support version 1.  Version 1 of ANSI
  1244. Z39.50-1991 should not be confused with ANSI Z39.50-1988).
  1245.  
  1246.     The Information Retrieval application protocol specifies the formats
  1247. and procedures governing the transfer of information between peer
  1248. information retrieval applications. A unit of information, passed between
  1249. two peer applications is called an "application protocol data unit" or
  1250. APDU.
  1251.  
  1252. 4.1  ABSTRACT SYNTAX OF THE INFORMATION RETRIEVAL PROTOCOL 
  1253.  
  1254.     The Information Retrieval protocol data units are complex data types.
  1255. The transfer syntax of these data types is negotiated by the presentation
  1256. service provider.  The definitions in this section specify the component
  1257. data elements of the protocol data units and the Type-0 , Type-1 Type-2,
  1258. and Type-100 queries.
  1259.  
  1260. 4.1.1  ASN.1 Specification of the APDUs
  1261.  
  1262.          This section describes the abstract syntax of the Z39.50 APDUs,
  1263. using the ASN.1 notation defined in ISO 8824 and in its addendum 1.  The
  1264. comments included within the ASN.1 specification constitute part of the
  1265. standard.
  1266.  
  1267. BEGIN   -- ANSI Z39.50 version 2 - May 16, 1991
  1268. ANSIZ39-50-2  DEFINITIONS ::=  
  1269. BEGIN         
  1270.  
  1271. PDU ::= CHOICE{
  1272.   initRequest                   [20]      IMPLICIT InitializeRequest,
  1273.   initResponse                  [21]      IMPLICIT InitializeResponse,
  1274.   searchRequest                 [22]      IMPLICIT SearchRequest,
  1275.   searchResponse                [23]      IMPLICIT SearchResponse,
  1276.   presentRequest                [24]      IMPLICIT PresentRequest,
  1277.   presentResponse               [25]      IMPLICIT PresentResponse,
  1278.   deleteResultSetRequest        [26]      IMPLICIT DeleteResultSetRequest,
  1279.   deleteResultSetResponse       [27]      IMPLICIT DeleteResultSetResponse,
  1280.   accessControlRequest          [28]      IMPLICIT AccessControlRequest,
  1281.   accessControlResponse         [29]      IMPLICIT AccessControlResponse,
  1282.   resourceControlRequest        [30]      IMPLICIT ResourceControlRequest,
  1283.   resourceControlResponse       [31]      IMPLICIT ResourceControlResponse}
  1284.          -- new APDUs can be added in the future at the end of this list.
  1285.  
  1286. -- Initialization APDUs 
  1287.       InitializeRequest ::=SEQUENCE{
  1288.            referenceId                      ReferenceId OPTIONAL,
  1289.            protocolVersion                  ProtocolVersion,
  1290.                     -- proposed version of the protocol to be used (see below).
  1291.            options                          Options,
  1292.                     -- proposed set of services to be used
  1293.            preferredMessageSize             PreferredMessageSize,
  1294.                     -- origin proposal for the size of large messages
  1295. (where message size 
  1296. is the sum of sizes, in bytes, of the records in an APDU)
  1297. the target should normally use when presenting groups of records;
  1298. however, the first record in a response is permitted to cause the
  1299. message to exceed this size (see also maximumRecordSize below).
  1300.            maximumRecordSize                MaximumRecordSize,
  1301. origin proposal for maximum record size (number of bytes).
  1302. Value must be greater than or equal to preferredMessageSize.
  1303.            idAuthentication                 [7]  ANY OPTIONAL,
  1304. information as required by the target to access the responding
  1305. IRPM; syntax of this parameter to be defined by the target prior
  1306. to communication.
  1307.            implementationId                 ImplementationId OPTIONAL,
  1308.            implementationName               ImplementationName OPTIONAL,
  1309.            implementationVersion            ImplementationVersion OPTIONAL,
  1310.            userInformationField             UserInformationField OPTIONAL}
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  InitializeResponse ::= SEQUENCE
  1316.            {referenceId                     ReferenceId OPTIONAL,
  1317.            protocolVersion                  ProtocolVersion,
  1318.            options                          Options,
  1319.            preferredMessageSize             PreferredMessageSize,
  1320. target decision on maximum APDU size (see description under
  1321. InitializationRequest definition). Value is allowed to be different
  1322. from what origin proposed in the InitializationRequest; if origin
  1323. does not agree on target values, it may abort the connection.
  1324.            maximumRecordSize                MaximumRecordSize,
  1325. target decision on the maximum record size 
  1326.            result                           [12]  IMPLICIT BOOLEAN,
  1327. result of the processing of the request at the target. 
  1328. reject = FALSE. Accept = TRUE;
  1329.            implementationId                 ImplementationId OPTIONAL,
  1330.            implementationName               ImplementationName OPTIONAL,
  1331.            implementationVersion            ImplementationVersion OPTIONAL,
  1332.            userInformationField             UserInformationField OPTIONAL}
  1333. -- Auxiliary definitions for Initialization APDUs
  1334.       ProtocolVersion  ::=  [3]   IMPLICIT BIT STRING
  1335. represents a string of Boolean values, each value representing a
  1336. version. The first value set to 1 indicates version 1 is available,
  1337. the second value set to 1 indicates version 2 is available,
  1338. and so on.  Values higher than the highest known version should
  1339. be ignored.  Both the Initialize and Initialize Response APDUs
  1340. include a value string corresponding to the supported versions.
  1341. The highest common version is selected for use.  If there are no
  1342. versions in common, the Initialize Response APDU should
  1343. indicate a value of "reject" for the parameter Result.
  1344. 2 should indicate support for version 1 as well, for interoperability
  1345. with systems that indicate support for version 1 only.  
  1346.       Options  ::=  [4]   IMPLICIT BIT STRING {search  (0), present (1), 
  1347.                           delSet  (2), resourceCtrl (3), accessCtrl (4)}
  1348. In InitializeRequest, for search, present and delete, bit ON
  1349. indicates initiator does request use of service; for resource
  1350. contrl and access control, bit ON indicated indicates initiator
  1351. will support service. For InitializeResponse, for search, present
  1352. and delete, bit ON indicates target will support service; for
  1353. resource control and access control, bit ON indicated target
  1354. requests service.  For extensibility of the protocol, additional
  1355. bits set should not be considered to be an error on received
  1356. InitializeRequest.
  1357.       PreferredMessageSize       ::=   [5]   IMPLICIT INTEGER
  1358.       MaximumRecordSize          ::=   [6]   IMPLICIT INTEGER
  1359.       ImplementationId           ::=  [110]   IMPLICIT VisibleString
  1360.       ImplementationName         ::=  [111]   IMPLICIT VisibleString
  1361.       ImplementationVersion      ::=  [112]   IMPLICIT VisibleString
  1362. these three implementation parameters are provided solely for the
  1363. convenience of implementors needing to distinguish implemen-
  1364. tations. They shall not be the subject of conformance tests.
  1365.       UserInformationField                  ::=  [11]   EXTERNAL 
  1366. additional information, not defined in this standard.
  1367. -- end auxiliary definitions for initialization APDUs
  1368.  
  1369. -- Search APDUs 
  1370.       SearchRequest ::= SEQUENCE{
  1371.            referenceId                ReferenceId OPTIONAL,
  1372.            smallSetUpperBound         [13]  IMPLICIT INTEGER,
  1373. if the number of hits is less than or equal to this number, all
  1374. records are to be returned in the SearchResponse (within the 
  1375. limits given by the negotiated preferredMessage- and
  1376. maximumRecordSize), composed in the way specified by the
  1377. smallSetElementSetNames parameter below.  May be zero.
  1378.            largeSetLowerBound         [14]  IMPLICIT INTEGER,
  1379. if the number of hits is equal to or greater than this number, no
  1380. records are to be returned. LargeSetLowerBound must be greater
  1381. than smallSetUpperBound.  
  1382.            mediumSetPresentNumber     [15]  IMPLICIT INTEGER,
  1383. maximum no. of records to be returned in the SearchResponse
  1384. if the number of hits is between largeSetLowerBound and
  1385. smallSetUpperBound (again within the limits given
  1386. by the message and record size parameters), composed as 
  1387. specified by mediumSetRecordElementSetNames
  1388.            replaceIndicator           [16]  IMPLICIT BOOLEAN,
  1389. origin indicates whether or not to replace a previously created
  1390. result set with the same name by the one that is constructed in
  1391. this search.
  1392.            resultSetName              [17]  IMPLICIT VisibleString,
  1393. origin proposal for naming of the result set that is constructed
  1394. if hits are found. If target allows the origin to assign names to
  1395. result sets, it uses this proposed name.  If the target does
  1396. not support named result sets it returns an error diagnostic.
  1397.            databaseNames              [18] IMPLICIT SEQUENCE OF DatabaseName,
  1398. database(s) in which the search will be performed.
  1399.            smallSetElementSetNames   [100] IMPLICIT ElementSetNames OPTIONAL,
  1400. origin proposal for composition of the records in the small set
  1401. (see above under smallSetUpperBound).
  1402.            mediumSetElementSetNames  [101] IMPLICIT ElementSetNames OPTIONAL,
  1403. origin proposal for the composition of the records in the medium
  1404. set (see above under mediumSetPresentNumber).
  1405.            preferredRecordSyntax     PreferredRecordSyntax OPTIONAL,
  1406. origin proposal for abstract syntax of the database records to
  1407. be returned in the SearchResponse. Values subject to registration.
  1408.            query    [21]                    Query}
  1409. the search argument (see description below).
  1410. -- query definition
  1411.       Query  ::=  CHOICE 
  1412.            {type-0                     [0]  ANY,  
  1413.             type-1                     [1]  IMPLICIT RPNQuery,
  1414.             type-2                     [2]  OCTET STRING,
  1415.             type-100                 [100]  OCTET STRING}
  1416. the search argument contained in the SearchRequest.  Four types
  1417. are defined:
  1418.  
  1419.         --   a) A type-0 query may be used only when the origin and target
  1420.         --      have an a priori agreement outside of this standard as to 
  1421.         --      form of quert acceptable to the target.
  1422.         --   b) type-1 is the Reverse Polish Notation (RPN) query (see below). 
  1423.         --   c) type-2 is the ISO8777 type query, specified in ISO 8777.
  1424.         --   d) type-100 is the Z39.58 type query.
  1425.  
  1426.  RPNQuery  ::=  SEQUENCE{ 
  1427.                 attributeSetId  OBJECT IDENTIFIER,  -- identifies attribute set
  1428.                 RPNStructure}
  1429.  
  1430.       RPNStructure ::= CHOICE { 
  1431.                         [0] Operand, 
  1432.                         [1] IMPLICIT SEQUENCE { 
  1433.                                RPNStructure, 
  1434.                                RPNStructure, 
  1435.                                Operator } } 
  1436.  
  1437.       Operand             ::=  CHOICE{
  1438.                           AttributesPlusTerm, 
  1439.                           ResultSetId}
  1440.  
  1441.       AttributesPlusTerm  ::=  [102]   IMPLICIT SEQUENCE{
  1442.                                               AttributeList, 
  1443.                                               Term}
  1444.  
  1445.       AttributeList       ::=  [44]   IMPLICIT SEQUENCE OF
  1446.                                               AttributeElement
  1447.  
  1448.  Term                     ::=  [45]   IMPLICIT OCTET STRING
  1449.        -- the type OCTET STRING is used to enable the inclusion of
  1450.        -- multibyte character representations which the types CharacterString
  1451.        -- and VisibleString might impose on graphic character repertoire.
  1452.  
  1453.  Operator                 ::=  [46]   CHOICE{
  1454.                                   and                 [0] IMPLICIT NULL,
  1455.                                   or                  [1] IMPLICIT NULL,
  1456.                                   and-not             [2] IMPLICIT NULL}
  1457.  
  1458.  AttributeElement         ::=  SEQUENCE{
  1459.                                     AttributeType,
  1460.                                     AttributeValue}
  1461.  
  1462.  AttributeType  ::=  [120] IMPLICIT INTEGER
  1463.  AttributeValue ::=  [121] IMPLICIT INTEGER
  1464.        -- AttributeType and AttributeValue interpretation is governed by the
  1465.        -- values contained in the definition identified by AttributeSetId
  1466.  
  1467.  
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  SearchResponse ::= SEQUENCE{
  1474.     referenceId                  ReferenceId OPTIONAL,
  1475.     resultCount                  [23]  IMPLICIT INTEGER,
  1476.     -- number of hits resulting from the search.
  1477.     numberOfRecordsReturned NumberOfRecordsReturned,
  1478.     -- number of records in the searchResults below.
  1479.     nextResultSetPosition   NextResultSetPosition,
  1480.     -- the ordinal number in the result set of the record appearing
  1481.     -- directly after the last record in the searchResults below.
  1482.     searchStatus                 [22]  IMPLICIT BOOLEAN,
  1483.     -- result of the processing of the request at the target IRPM.
  1484.     -- success = TRUE; failure = FALSE.
  1485.     resultSetStatus              [26]  IMPLICIT INTEGER
  1486.     {subset(1), interim(2), none(3)} OPTIONAL,
  1487.     -- occurs if and only if search-status is FALSE indicates the presence
  1488.     -- and validity of the result set produced.
  1489.     presentStatus                PresentStatus OPTIONAL,
  1490.     -- occurs if and only if search-status is TRUE. Indicates presence and
  1491.     -- validity of records appearing in searchResults (see below).
  1492.     databaseOrDiagnosticRecords  Records OPTIONAL}
  1493.     -- the records (diagnostic and/or bibliographic) resulting from the
  1494.     -- search (see description below).
  1495.  
  1496. -- Present APDUs
  1497.     PresentRequest ::= SEQUENCE{
  1498.     referenceId                  ReferenceId OPTIONAL,
  1499.     resultSetId                  ResultSetId,
  1500.     -- identification of the result set from which to retrieve records
  1501.     resultSetStartPoint          [30]      IMPLICIT INTEGER,
  1502.     -- ordinal number in the result set of the first record to appear in
  1503.     -- the presentResults in the PresentResponse.
  1504.     numberOfRecordsRequested [29]                    IMPLICIT INTEGER,
  1505.     -- specifies the maximum number of records to be returned in the
  1506.     -- presentResults in the PresentResponse (within the limits given by
  1507.     -- the negotiated message and record size parameters), composed as 
  1508.     -- specified by the element set names parameter below.
  1509.     ElementSetNames                        OPTIONAL,
  1510.     -- origin proposal for the composition of the records to be returned
  1511.     -- in the presentResults parameter in the PresentResponse 
  1512.     preferredRecordSyntax                  PreferredRecordSyntax OPTIONAL}
  1513.     -- origin proposal for abstract syntax of the database records to
  1514.     -- be returned in the presentResults in the PresentResponse.  Values
  1515.     -- subject to registration, at present by specification in Appendix E.
  1516.  
  1517.  PresentResponse ::= SEQUENCE{
  1518.     referenceId                  ReferenceId OPTIONAL,
  1519.     numberOfRecordsReturned                NumberOfRecordsReturned,
  1520.     -- number of records returned in the presentResults below.
  1521.     nextResultSetPosition        NextResultSetPosition,
  1522.     -- the ordinal number in the result set of the record appearing
  1523.     -- directly after the last record in the presentResults below.
  1524.     presentStatus                PresentStatus,
  1525.     -- indicates the presence and validity of the records 
  1526.     databaseOrDiagnosticRecords Records OPTIONAL} -- the presented records
  1527.  
  1528. -- begin auxiliary definitions for search and present APDUs
  1529. -- begin definition of record structure
  1530.  
  1531. Records ::= CHOICE{
  1532.     dataBaseOrSurDiagnostics               [28] IMPLICIT SEQUENCE OF
  1533.                                                           NamePlusRecord,
  1534.     nonSurrogateDiagnostic                 [130] IMPLICIT  DiagRec}
  1535.  
  1536.     NamePlusRecord  ::=  SEQUENCE{
  1537.                 [0] IMPLICIT DatabaseName OPTIONAL,
  1538.                 presence of DatabaseName is conditional. See
  1539.                 3.2.2.1.5 and 3.2.3.1.5.
  1540.                 [1] CHOICE{   
  1541.             databaseRecord        [1] DatabaseRecord,
  1542.             surrogateDiagnostic    [2] DiagRec}}
  1543.  
  1544.     DatabaseRecord  ::=  EXTERNAL
  1545.     -- the database record syntax is defined outside of this standard.
  1546.     -- For bibliographic data, USMARC is a prime example.
  1547.  
  1548.     DiagRec  ::=  SEQUENCE{ 
  1549.             diagnosticSetId        OBJECT IDENTIFIER,
  1550.             condition        INTEGER,
  1551.     -- interpretation of condition is governed by values contained in
  1552.     -- definition identified by DiagnosticSetId.
  1553.             addinfo            VisibleString} -- add'l info.
  1554. -- end definition of record structure
  1555.  
  1556. -- begin definition of element set names
  1557.       ElementSetNames                 ::=  [19]   CHOICE{
  1558.          generic                        [0] IMPLICIT ElementSetName,
  1559.          databaseSpecific               [1] IMPLICIT SEQUENCE OF SEQUENCE{
  1560.                                                           DatabaseName,
  1561.                                                           ElementSetName}}
  1562.       ElementSetName  ::=  [103]   IMPLICIT VisibleString
  1563.     -- A target must always recognize the value "F" to mean "full record". 
  1564.  
  1565. -- end definition of element set name.
  1566.  
  1567. -- begin miscellaneous definitions for search and present APDUs
  1568.   NumberOfRecordsReturned             ::=  [24]   IMPLICIT INTEGER
  1569.   NextResultSetPosition               ::=  [25]   IMPLICIT INTEGER 
  1570.   PresentStatus                       ::=  [27]   IMPLICIT INTEGER{
  1571.                                                 success (0),
  1572.                                                 partial-1 (1),
  1573.                                                 partial-2 (2),
  1574.                                                 partial-3 (3),
  1575.                                                 partial-4 (4),
  1576.                                                 failure   (5)}
  1577.   PreferredRecordSyntax               ::=  [104]   IMPLICIT OBJECT IDENTIFIER
  1578. -- end miscellaneous definitions for search and present APDUs
  1579. -- end auxiliary definitions for search and present APDUs
  1580.  
  1581. -- Delete Result Set APDUs 
  1582.  
  1583. DeleteResultSetRequest ::=SEQUENCE{
  1584.          referenceId                  ReferenceId OPTIONAL,
  1585.          deleteOperation              [32]      IMPLICIT INTEGER{
  1586.                                                 list (0),
  1587.                                                 all (1)},
  1588.          resultSetList                SEQUENCE OF ResultSetId OPTIONAL } 
  1589.     -- identification of result sets to be deleted if operation is "list" 
  1590.  
  1591. DeleteResultSetResponse ::= SEQUENCE{
  1592.          referenceId                  ReferenceId OPTIONAL,
  1593.          deleteOperationStatus        [0]  IMPLICIT DeleteSetStatus,
  1594.     -- Reports status for entire delete operation.  Values limited to
  1595.     -- "success" or "failure-3" through "failure-9". Values of "failure-7"
  1596.     -- and "failure-8" may be used  only if operation is "all".
  1597.      listStatuses                 [1]  IMPLICIT ListStatuses OPTIONAL,
  1598.     -- Must occur if operation is "list".  Individual status values
  1599.     -- limited to  "success" through "failure-6".
  1600.          numberNotDeleted             [34]      IMPLICIT INTEGER OPTIONAL,
  1601.     -- number of result sets the target failed to delete.  Occurs only
  1602.     -- if operation is "all".
  1603.          bulkStatuses        [35]     IMPLICIT ListStatuses OPTIONAL,
  1604.     -- occurs if and only if DeleteSetStatus equals 8.  Individual
  1605.     -- statuses limited to  "success" through "failure-6"
  1606.          deleteMessage       [36]     IMPLICIT VisibleString OPTIONAL}
  1607.     -- textual message concerning the delete operation.
  1608.  
  1609. -- begin auxiliary definitions for delete
  1610. ListStatuses ::= SEQUENCE OF SEQUENCE{ 
  1611.                     ResultSetId, 
  1612.                     DeleteSetStatus}        
  1613.  
  1614. DeleteSetStatus ::= [33] IMPLICIT INTEGER{
  1615.                     success                                  (0),
  1616.                     resultSetDidNotExist                     (1),
  1617.                     previouslyDeletedByTarget                (2),
  1618.                     systemProblemAtTarget                    (3),
  1619.                     accessNotAllowed                         (4),
  1620.                     resource-control-at-origin               (5),
  1621.                     resourceControl-at-target                (6),
  1622.                     bulkDeleteNotSupported                   (7),
  1623.                     notAllRsltSetsDeletedOnBulkDlte          (8),
  1624.                     notAllRequestedResultSetsDeleted         (9)}
  1625.                    -- 7 and 8 used only if operation is "all".
  1626. -- end auxiliary definitions for delete
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634. --  Access Control APDUs 
  1635.   AccessControlRequest ::= SEQUENCE{
  1636.            referenceId                     ReferenceId OPTIONAL,
  1637.            securityChallenge          [37] IMPLICIT OCTET STRING}
  1638.  
  1639.   AccessControlResponse ::= SEQUENCE{
  1640.            referenceId                     ReferenceId OPTIONAL,
  1641.            securityChallengeResponse  [38] IMPLICIT OCTET STRING}
  1642.  
  1643. -- Resource Control APDUs 
  1644.  ResourceControlRequest ::= SEQUENCE{
  1645.            referenceId                     ReferenceId OPTIONAL,
  1646.            suspendedFlag              [39] IMPLICIT BOOLEAN, -- true = suspended
  1647.            resourceReport             [40] IMPLICIT ResourceReport OPTIONAL,
  1648.            partialResultsAvailable    [41] IMPLICIT INTEGER{
  1649.                                            subset  (1),
  1650.                                            interim (2),
  1651.                                            none    (3)} OPTIONAL,
  1652.  
  1653. ResourceControlResponse ::= SEQUENCE{
  1654.            referenceId                ReferenceId OPTIONAL,
  1655.            continueFlag               [42] IMPLICIT BOOLEAN, -- true = continue
  1656.            resultSetWanted            [43] IMPLICIT BOOLEAN OPTIONAL}
  1657. "true" = "result set wanted", required during a search if
  1658. Continue flag is false; otherwise should not occur
  1659.  
  1660. -- Begin auxiliary definitions for access and resource control
  1661. ResourceReport ::= SEQUENCE{
  1662.            resourceReportId                 [1] IMPLICIT OBJECT IDENTIFIER,
  1663.            estimates                        [2] IMPLICIT SEQUENCE OF Estimate,
  1664.            message                          [3] IMPLICIT VisibleString}
  1665.  
  1666. Estimate ::= SEQUENCE
  1667.            {estimateType                    [1] IMPLICIT INTEGER,
  1668. from table, determined by ResourceReportId
  1669.            estimateValue                    [2] IMPLICIT INTEGER} 
  1670. the actual estimate
  1671. -- End auxiliary definitions for resource and access control
  1672.  
  1673. -- begin global auxiliary definitions
  1674. ReferenceId  ::=                            [2]   IMPLICIT OCTET STRING
  1675.     -- value provided by the service originator in the Request APDU, target
  1676.     -- required to send it back unaltered in corresponding response APDU
  1677.  
  1678. DatabaseName ::=                            [105]   IMPLICIT VisibleString
  1679. ResultSetId  ::=                            [31]   IMPLICIT VisibleString
  1680.  
  1681. -- end global auxiliary definitions
  1682. END -- ANSIZ39-50-2  
  1683. END.
  1684.  
  1685. 4.2 PROTOCOL PROCEDURES 
  1686. 4.2.1 Services Required
  1687. 4.2.1.1  Service Required from the Presentation Layer 
  1688.  
  1689.            The protocol uses the presentation service as defined in ISO
  1690. 8822 to provide a presentation connection for communication between two
  1691. information retrieval applications.  The presentation services required are
  1692. those contained in the presentation kernel functional unit and the session
  1693. duplex functional unit. The common application association control protocol
  1694. may have additional requirements for presentation services.
  1695.  
  1696.            All Information Retrieval protocol data units will be mapped
  1697. onto the P-Data service.  The communication service that supports this
  1698. protocol is a connection-oriented service using the P-DATA service, defined
  1699. in ISO 8822 in an established application association, in combination with
  1700. the ACSE, ISO 8649.
  1701.  
  1702.            A Z39.50 origin establishes application-associations as
  1703. necessary with the target with whom it is engaged in Z39.50 activity.  The
  1704. Z39.50 application-service-element (ASE) may then use the P- DATA service
  1705. defined in ISO 8822 directly to transmit Z39.50 APDUs.  This provides a
  1706. connection- oriented interaction between Z39.50 systems.  A single
  1707. application-association can be used to send a series of Z39.50 APDUs
  1708. relating to multiple searches.  A single system can be engaged in multiple
  1709. application associations with multiple remote systems simultaneously.
  1710.  
  1711.  
  1712. 4.2.1.2   Association Control Services Assumed 
  1713.  
  1714.            The protocol assumes the services of the association control
  1715. service elements as defined in ISO 8649.  The services required are:
  1716.  
  1717.     1)    orderly association release, where both sides agree to the release
  1718.     and there is no loss of data in transit (the IR-release service is
  1719.     directly mapped to this service without any Information Retrieval
  1720.     protocol control information), and 
  1721.     2)    association abort, which allows either origin or target, at any
  1722.     time, to explicitly terminate the association, immediately and
  1723.     unconditionally.  Data in transit may be lost (the IR-abort service
  1724.     is directly mapped to this service without any Information
  1725.     Retrieval protocol control information).  
  1726.  
  1727.            
  1728.  
  1729.            It is assumed that the Information Retrieval service user will
  1730. handle the association control services required to establish an
  1731. association with an application context encompassing the Information
  1732. Retrieval service.
  1733.  
  1734.  
  1735. 4.2.2  Protocol Model 
  1736.  
  1737.            To specify protocol procedure, the abstract,
  1738. implementation-independent concepts of service-user, service-provider, and
  1739. service primitive are used.
  1740.  
  1741.            A service-provider provides a communication path between two
  1742. service users.  A service primitive is an element of interraction between
  1743. the service-user and the service-provider.
  1744.  
  1745.  
  1746.             There are four types of service primitives: 
  1747.     1)    Request -  A primitive issued by the origin service-user to the
  1748.     service-provider in order to invoke some procedure. 
  1749.     2)    Indication -  A primitive issued by the service-provider to the
  1750.     target service-user to indicate that a procedure has been invoked
  1751.     by its peer.
  1752.     3)    Response -  A primitive issued by the target service-user to the
  1753.     service-provider at the completion of the procedure previously
  1754.     invoked by an  indication.  
  1755.     4)    Confirmation -  A primitive issued by the service-provider to the
  1756.     origin service-user to complete the procedure previously invoked by
  1757.     a request.
  1758.  
  1759.            Primitives are conceptual and their use neither specifies nor
  1760. precludes any specific implementation of a service.  Only primitives that
  1761. correspond to some element of the service involving the exchange of
  1762. information between systems are defined.
  1763.  
  1764.            From the perspective of the service-user, the service-provider
  1765. is system-independent. For the exchange of protocol however, a distinction
  1766. is made between those portions of the service-provider residing on the
  1767. origin and target systems (respectively, the origin service-provider and
  1768. the target service-provider). See figure 4.2.2-1. The sequence of
  1769. interractions is:
  1770.  
  1771. 1) Request Primitive from origin service-user to service-provider. 
  1772. 2) Protocol Message from origin service-provider to target service-provider. 
  1773. 3) Indication Primitive from service-provider to target service-user. 
  1774. 4) Response Primitive from target service-user to service-provider. 
  1775. 5) Protocol Message from target service-provider to origin service-provider. 
  1776. 6) Confirmation Primitive from service-provider to origin service-user. 
  1777.  
  1778. _____________________ Figure_______________________________________________
  1779.  
  1780.        ORIGIN                              TARGET 
  1781.     SERVICE-USER                         SERVICE-USER 
  1782.              ^                               ^   ~
  1783.          3   3                               3   3 
  1784.          3   3                               3   3 
  1785.          3   36)Confirmation    3)Indication 3   3 
  1786.          3   3                               3   3 
  1787.          3   3                               3   3 
  1788.          3   3                               3   3 
  1789. 1)Request3   3                               3   34)Response
  1790.          3   3                               3   3
  1791.          3   3                               3   3 
  1792.          3   3                               3   3 
  1793.          3   3               2) Protocol     3   3
  1794.         \~/  ~                  Message      ~  \~/ 
  1795.         ORIGIN     ~DDDDDDDDDDDDDDDDDDDD>    TARGET 
  1796.   SERVICE-PROVIDER <~DDDDDDDDDDDDDDDDDDD~SERVICE-PROVIDER 
  1797.                     5) Protocol 
  1798.                        Message
  1799. _____________________________________________________________________
  1800.  
  1801.     The following illustrates the sequence of interactions which
  1802.     occur for a Search operation: 
  1803. 1) Search request from origin service-user to service-provider. 
  1804. 2) Search APDU (Application Protocol Data Unit) from origin
  1805.    service-provider to target service-provider. 
  1806. 3) Search indication from service-provider to target service-user. 
  1807. 4) Search response from target service-user to service-provider. 
  1808. 5) Search-response APDU from target service-provider to origin service-provider. 
  1809. 6) Search confirm from service-provider to origin service-user. 
  1810.  
  1811. represented by steps 1 and 6 for the origin, and by steps 3 and 4 for the
  1812. target, are described solely to facilitate the specification of protocols.
  1813. These steps do not represent intersystem communication, and therefore, the
  1814. means by which they are implemented are not constrained by this
  1815. specification.  In an actual implementation, step 4, for example, might
  1816. consist of several messages from the target service user to service
  1817. provider.  On the other hand, both the target service user and service
  1818. provider could be combined in a single program, in which case steps 3 and 4
  1819. might not have any real physical manifestation.
  1820.  
  1821. 4.2.3  State Tables
  1822.            This section defines two Information Retrieval Protocol Machines
  1823. (IRPMs) in terms of state tables. One state table is defined for the origin
  1824. (table 4-4) and one state table is defined for the target (table 4-5).
  1825. Each state table shows the inter-relationship between the state of an
  1826. Information Retrieval association, the incoming events that occur in the
  1827. protocol, the actions taken, and, finally, the resulting state of the
  1828. association.  The IRPM state table does not constitute a formal definition
  1829. of the IRPM.  It is included to provide a more precise specification of the
  1830. protocol procedures.  The following conventions are used in the state
  1831. tables.
  1832.  
  1833. State Table Cells The intersection of an incoming event (row) and a state
  1834. (column) forms a cell.  A blank cell represents the combination of an
  1835. incoming event and a state that is not defined for the IRPM.  A non blank
  1836. cell represents an incoming event and state that is defined for the IRPM.
  1837. Such a cell contains one or more actions, separated by semi-colons (;).
  1838.  
  1839. Actions to be Taken by the IRPM The IRPM state tables define the action to
  1840. be taken by the IRPM in terms of one or more outgoing events (separated by
  1841. semi-colons) and the resulting state (in parenthesis) of the Information
  1842. Retrieval association.
  1843.  
  1844. Invalid Intersections Blank cells indicate an invalid intersection of an
  1845. incoming event and state.  The state tables define correct operation only.
  1846. They do not specify actions to be taken in response to incorrect operation
  1847. (for example, erroneous protocol control information, incorrect protocol
  1848. control actions, etc).  Such actions are not within the scope of the
  1849. specification, although implementations must consider them.
  1850.  
  1851. Table 20: Events and Actions
  1852.     The following tables list the events and actions which occur in the
  1853. state tables and their abbreviations as used in the state tables.
  1854.   
  1855. Incoming Events -- Origin                                     Abbreviation
  1856. Init request                                                  Init req 
  1857. Init-response PDU                                             Init resp PDU
  1858. Search request                                                Srch req   
  1859. Search-response PDU                                           Srch resp PDU
  1860. Present request                                               Prsnt req  
  1861. Present-response PDU                                          Prsnt resp PDU
  1862. Delete request                                                Dlte req  
  1863. Delete-response PDU                                           Dlte resp PDU
  1864. Resource-control PDU                                          Rsc PDU
  1865. Resource-control response                                     Rsc resp   
  1866. Access-control PDU                                            Acc PDU
  1867. Access-control response                                       Acc resp     
  1868. P-P-abort indication                                          Pab ind
  1869. IR-abort request                                              Iab req
  1870. IR-release request                                            Irel req
  1871. A-release confirm                                             Arel conf
  1872. Outgoing Actions -- Origin                                    Abbreviation
  1873. Init PDU                                                      Init PDU
  1874. Init confirm                                                  Init conf
  1875. Search PDU                                                    Srch PDU
  1876. Search confirm                                                Srch conf
  1877. Present PDU                                                   Prsnt PDU
  1878. Present confirm                                               Prsnt conf
  1879. Delete PDU                                                    Dlte PDU
  1880. Delete confirm                                                Dlte conf
  1881. Resource-control indication                                   Rsc ind
  1882. Resource-control-response PDU                                 Rsc resp PDU
  1883. Access-control indication                                     Acc ind
  1884. Access-control-response PDU                                   Acc resp PDU
  1885. IR-abort indication                                           Iab ind
  1886. A-abort request                                               Aab req
  1887. A-release request                                             Arel req 
  1888. IR-release confirm                                            Irel conf
  1889. Save current state                                            stkst
  1890. Restore previously saved state                                popst
  1891.  
  1892. Incoming Event -- Target                                      Abbreviation
  1893. Init PDU                                                      Init PDU
  1894. Init response                                                 Init resp
  1895. Search PDU                                                    Srch PDU
  1896. Search response                                               Srch resp
  1897. Present PDU                                                   Prsnt PDU
  1898. Present response                                              Prsnt resp
  1899. Delete PDU                                                    Dlte PDU
  1900. Delete response                                               Dlte resp
  1901. Resource-control request                                      Rsc req   
  1902. Resource-control-response PDU                                 Rsc resp PDU
  1903. Access-control request                                        Acc req   
  1904. Access-control-response PDU                                   Acc resp PDU
  1905. A-P-abort indication                                          Apab ind
  1906. A-abort indication                                            Aab ind
  1907. IR-abort request                                              Iab req
  1908. A-release indication                                          Arel ind 
  1909. IR-release response                                           Irel resp
  1910.  
  1911. Outgoing Action -- Target                                     Abbreviation
  1912. Init indication                                               Init ind
  1913. Init-response PDU                                             Init resp PDU
  1914. Search indication                                             Srch ind
  1915. Search-response PDU                                           Srch resp PDU
  1916. Present indication                                            Prsnt ind
  1917. Present-response PDU                                          Prsnt resp PDU
  1918. Delete indication                                             Dlte ind
  1919. Delete-response PDU                                           Dlte resp PDU
  1920. Resource-control PDU                                          Rsc PDU
  1921. Resource-control confirm                                      Rsc conf
  1922. Access-control PDU                                            Acc PDU
  1923. Access-control confirm                                        Acc conf
  1924. IR-abort indication                                           Iab ind
  1925. Outgoing Action -- Target (continued)                         Abbreviation
  1926. A-abort request                                               Aab req
  1927. IR-release indication                                         Irel ind
  1928. A-release response                                            Arel resp
  1929. Save current state                                            stkst
  1930. Restore previously saved state                                popst
  1931.  
  1932. Table 21: Definition of States 
  1933.  
  1934. Origin states
  1935. 1. Closed: the origin is awaiting an Init request from the application
  1936. 2. Init sent: the origin has transmitted an Init APDU to the target
  1937. 3. Open: the origin is awaiting a Search, Present, or Delete request
  1938. 4. Search sent: the origin has transmitted a Search APDU
  1939. 5. Prsnt sent: the origin has transmitted a Present APDU
  1940. 6. Delete sent: the origin has transmitted a Delete APDU
  1941. 7. Rsctrl recvd: the origin has issued a Resource-control indication
  1942. 8. Acctrl recvd: the origin has issued an Access-control indication
  1943. 9. Rlease sent: the origin has issued an A_release request
  1944.  
  1945. Target states
  1946. 1.  Closed: the target is awaiting an Init APDU
  1947. 2.  Init recvd: the target has issued an Init indication
  1948. 3.  Open: the target is awaiting a Search, Present, or Delete APDU
  1949. 4.  Search recvd: the target has issued a Search indication
  1950. 5.  Prsnt recvd: the target has issued a Present indication
  1951. 6.  Delete recvd: the target has issued a Delete indication
  1952. 7.  Rsctrl sent: the target has transmitted a Resource-control APDU
  1953. 8.  Acctrl sent: the target has transmitted an Access-control APDU
  1954. 9.  Rlease Recvd: the target has issued an IR_rel indication.
  1955. 10. Reject: the target has transmitted an Init Response APDU (REJECT)
  1956.  
  1957. Table 22:  State Table for Origin Systems
  1958.  
  1959. STATE
  1960.  
  1961.    EVENTclosed  
  1962.    1 Init
  1963.  sent
  1964.    2 Open
  1965.  
  1966.    3Search
  1967.  sent
  1968.    4Prsnt 
  1969. sent
  1970.   5Delete
  1971. sent
  1972.   6Rsctrl
  1973. recvd
  1974.   7Acctrl
  1975. Recvd
  1976.   8Rlease
  1977. sent
  1978.   9Init
  1979. reqInit PDU
  1980. (2)Init resp
  1981. PDU (ACCEPT)Init conf+
  1982. (3)Init resp
  1983. PDU
  1984. (REJECT)Init conf-
  1985. ;Arel req 
  1986. [(9)Srch
  1987. reqSrch
  1988. PDU (4)Srch resp PDUSrch
  1989. conf (
  1990.  
  1991. Table 22 (continued):  State Table for Origin Systems
  1992. STATE
  1993.   EVENTClosed
  1994.   1Init
  1995. sent
  1996.   2OpenSearch
  1997. sent
  1998.   4Prsnt
  1999. sent
  2000.   5Delete
  2001. sent
  2002.   6Rsctrl
  2003. recvd
  2004.   7Acctrl
  2005. recvd
  2006.   8Rlease
  2007. sent
  2008.   9Prsnt reqPrsnt
  2009. PDU
  2010. (5)Prsnt resp
  2011. PDUPrsnt
  2012. conf (3)Dlte reqDlte
  2013. PDU
  2014. (6)Dlte resp
  2015. PDUDlte
  2016. conf (3)Rsc PDURsc
  2017. ind;
  2018. stkst
  2019. (7)Rsc ind;
  2020. stkst (7)Rsc ind;
  2021. stkst (7)Rsc ind;
  2022. stkst (7)Rsc respRsc
  2023. resp
  2024. PDU;
  2025. popstAcc PDUAcc
  2026. ind;
  2027. stkst
  2028. (8)Acc ind;
  2029. stkst (8)Acc ind;
  2030. stkst (8)Acc ind;
  2031. stkst (8)Acc respAcc
  2032. resp
  2033. PDU;
  2034. popst Aab indIab ind
  2035. (1)Iab
  2036. ind (1)Iab ind
  2037. (1)Iab ind
  2038. (1)Iab ind
  2039. (1)Iab ind
  2040. (1)Iab ind
  2041. (1)Iab ind
  2042. (1)Apab indIab ind
  2043. (1)Iab
  2044. ind (1)Iab ind
  2045. (1)Iab ind
  2046. (1)Iab ind
  2047. (1)Iab ind
  2048. (1)Iab ind
  2049. (1)Iab ind
  2050. (1)Iab reqAab
  2051. req (1)Aab
  2052. req (1)Aab req
  2053. (1)Aab req
  2054. (1)Aab req
  2055. (1)Aab
  2056. req (1)Aab
  2057. req (1)Aab req
  2058. (1)Irel reqArel
  2059. req (9)Arel confIrel conf
  2060. (1)Table 23:  State Table for Target Systems
  2061.  
  2062.  
  2063.  \ State
  2064.    \
  2065. Event\Closed Init
  2066. recvd
  2067.   2Open
  2068.  
  2069.   3Search
  2070.  recvd
  2071.    4Prsnt
  2072. recvd
  2073.   5Delete
  2074. recvd
  2075.   6Rsctrl
  2076.  sent
  2077.   7Acctrl
  2078.  sent
  2079.   8Rlease
  2080. recvd
  2081.   9Reject
  2082.   
  2083.   10Init
  2084. PDUInit
  2085. ind
  2086. (2)Init
  2087. resp
  2088. (ACCEPT)Init
  2089. resp
  2090. PDU(+) 
  2091.  (3)Init 
  2092. resp
  2093. (REJECT)Init
  2094. resp
  2095. PDU(-)
  2096.  (10)Srch
  2097. PDUSrch
  2098. ind
  2099. (4)Srch
  2100. respSrch
  2101. resp
  2102. PDU
  2103. (3)Prsnt
  2104. PDU Prsnt
  2105. ind
  2106. (5)Prsnt
  2107. respPrsnt
  2108. resp
  2109. PDU
  2110. (3)Dlte
  2111. PDUDlte
  2112. ind
  2113. (6)Dlte
  2114. respDlte
  2115. resp
  2116. PDU
  2117. (3)Rsc
  2118. reqRsc
  2119. PDU;
  2120. stkst
  2121. (7)Rsc
  2122. PDU;
  2123. stkst
  2124. (7)Rsc
  2125. PDU;
  2126. stkst
  2127. (7)Rsc
  2128. PDU;
  2129. stkst
  2130. (7)Table 23 Continued
  2131.  
  2132.  \
  2133. State
  2134.    \
  2135. Event\Closed Init
  2136. recvd
  2137.   2Open
  2138.  
  2139.   3Search
  2140.  recvd
  2141.    4Prsnt
  2142. recvd
  2143.   5Delete
  2144. recvd
  2145.   6Rsctrl
  2146.  sent
  2147.   7Acctrl
  2148.  sent
  2149.   8Rlease
  2150. recvd
  2151.   9Reject
  2152.  
  2153.   10Rsc
  2154. resp
  2155. PDURsc
  2156. conf;
  2157. popstAcc
  2158. reqAcc
  2159. PDU;
  2160. stkst
  2161. (8)Acc
  2162. PDU;
  2163. stkst
  2164. (8)Acc
  2165. PDU;
  2166. stkst
  2167. (8)Acc
  2168. PDU;
  2169. stkst
  2170. (8)Acc
  2171. resp
  2172. PDUAcc
  2173. conf;
  2174. popstAab
  2175. indIab
  2176. ind
  2177. (1)Iab
  2178. ind
  2179. (1)Iab
  2180. ind
  2181. (1)Iab
  2182. ind
  2183. (1)Iab
  2184. ind
  2185. (1)Iab
  2186. ind
  2187. (1)Iab
  2188. ind
  2189. (1)Iab
  2190. ind
  2191. (1)Iab
  2192. ind
  2193. (1)Apab
  2194. indIab
  2195. ind
  2196. (1)Iab
  2197. ind
  2198. (1)Iab
  2199. ind
  2200. (1)Iab
  2201. ind
  2202. (1)Iab
  2203. ind
  2204. (1)Iab
  2205. ind
  2206. (1)Iab
  2207. ind
  2208. (1)Iab
  2209. ind
  2210. (1)Iab
  2211. ind
  2212. (1)Iab
  2213. reqAab
  2214. req
  2215. (1)Aab
  2216. req
  2217. (1)Aab
  2218. req
  2219. (1)Aab
  2220. req
  2221. (1)Aab
  2222. req
  2223. (1)Aab
  2224. req
  2225. (1)Aab
  2226. req
  2227. (1)Aab
  2228. req
  2229. (1)Aab
  2230. req
  2231. (1)Arel
  2232. indIrel
  2233. ind
  2234. (9)Irel
  2235. ind
  2236. (9)Irel
  2237. respArel
  2238. resp
  2239. (1)
  2240. 4.2.4 Protocol Errors
  2241.     Any events not listed in the tables of section 4.2.3 are not valid and
  2242. are considered to be protocol errors.  With exceptions specified in section
  2243. 4.3, incorrectly formatted APDU's or APDU's with invalid data are also
  2244. considered to be protocol errors.  This standard does not specify the
  2245. actions to be taken upon detection of protocol errors.  [An application
  2246. context may contain such a specification.
  2247.  
  2248. 4.3 RULES FOR EXTENSIBILITY
  2249.     All syntactical errors in received APDUs are considered to be protocol
  2250. errors except for the following case: Unknown data elements, and unknown
  2251. options within the Options data element, will be ignored on received Init
  2252. APDUs.
  2253.  
  2254. 4.4  CONFORMANCE
  2255.     A system claiming to implement the procedures in this standard shall
  2256. comply with the requirements in sections 4.4.1, 4.4.2, and 4.4.3.
  2257.  
  2258.  
  2259. 4.4.1   Static Requirements
  2260. The system shall:
  2261.  
  2262.      a)    act in the role of an origin (by sending Init, Search, and
  2263.        Present APDUs and recieving Init-response, Search-response and
  2264.        Present-response APDUs), or target (by responding properly to
  2265.        Init, Search, and Present APDUs with appropriate Init-response,
  2266.        Search-response and Present-response APDUs), or both; and,
  2267.      b)    support the syntax in section 4.1, and
  2268.      c)    support the Type-1 Query.
  2269.  
  2270.  
  2271. 4.4.2   Dynamic Requirements
  2272.  
  2273. The system shall exhibit external behavior consistent with having implemented:
  2274.  
  2275.      a)    an Information Retrieval ASE which follows all the procedures
  2276.        specified in sections 4.1.1, 4.2, and 4.3; 
  2277.      b)    the mapping onto the Association Control Service and
  2278.        Presentation Service (see 4.2.1); and 
  2279.      c)    assignment of values to APDU data elements according to the
  2280.        procedures describes in section 3.
  2281.      d)    encoding of APDUs by applying the ASN.1 Basic Encoding Rules
  2282.        (ISO 8825) to the abstract syntax defined in section 4.1.1.
  2283.      e)    the type-1 query whose abstract syntax is defined in section
  2284.        4.1.1 and whose structure is and rules for evaluation are
  2285.        described in the comments within section 4.1.1. 
  2286.  
  2287.  
  2288. 4.4.3   Statement Requirements
  2289.  
  2290. 1. The following shall be stated by the implementer:
  2291.  
  2292.      a)    whether the system is capable of acting in the role of origin, 
  2293.      b)    whether the system is capable of acting in the role of target, 
  2294.      c)    that the system supports  [versions 1 and 2 of  [the Z39.50-1991
  2295.        protocol. 
  2296.  
  2297.  
  2298. 2. If the system claims capability of acting in the role of origin the implementor shall state whether
  2299. the system:
  2300.  
  2301.      a)    accepts Access-control APDUs and sends Access-control-response
  2302.        APDUs,
  2303.      b)    accepts Resource-control APDUs and sends Resource-control-response
  2304.        APDUs, 
  2305.      c)    sends Delete APDUs and accepts Delete-response APDUs,
  2306.      d)    sends Search and Present APDUs specifying named result sets
  2307.        other than "default". 
  2308.  
  2309. 3.  If the system claims capability of acting in the role of target, the
  2310.     implementor shall state whether the system:
  2311.  
  2312.      a)    sends Access-control APDUs and accepts Access-control-response
  2313.        APDUs, 
  2314.      b)    sends Resource-control APDUs and accepts Resource-control-response
  2315.        APDUs,
  2316.      c)    accepts Delete APDUs and sends Delete-response APDUs,
  2317.      d)    accepts Search and Present APDUs specifying named result sets
  2318.        other than "default",
  2319.      e)    unilaterally deletes result sets.
  2320.  
  2321. 4. The implementor shall state to what extent result sets may be specified
  2322.    as operands in a type-1 query:
  2323.  
  2324.      a)    whether named result sets in general, or only the default result
  2325.        set, may be used as an 
  2326.            operand in a Type-1 query, 
  2327.      b)    whether result sets may be specified only as the first operand
  2328.        in a Type-1 query, or that they 
  2329.            may be specified as any operand,
  2330.      c)    with which operators (AND, OR, AND-NOT) may result sets be used
  2331.        as operands. 
  2332.  
  2333.  
  2334. 5.  The implementor shall state to what extent element set names are
  2335.     supported in Search and Present APDUs:
  2336.  
  2337.      a)    whether the parameter Element-set-names is supported,
  2338.      b)    if the parameter element-set-names is supported, whether
  2339.        database names corresponding to element set names may be
  2340.        specified, or only a single element set name and no 
  2341.            corresponding database name may be specified.
  2342.  
  2343.  
  2344. 6.  The implementor shall state: 
  2345.      a)    for each optional parameter in each APDU, whether or not the
  2346.        parameter is supported; 
  2347.      
  2348.      f)    which encoding rules are supported;
  2349.      a)    the maximum number of database names which may be specified in a
  2350.        Search APDU; 
  2351.      e)    which attribute sets are supported.
  2352.  
  2353.  
  2354. APPENDIX A: Object Identifiers Assigned in This Standard 
  2355.  
  2356.     This appendix is part of the standard. 
  2357.  
  2358.     The following object identifier value has been assigned to this
  2359.     standard, ANSI-standard-Z39.50: 
  2360.         { iso (1) member-body (2) US (840) ANSI-standard-Z39.50 (10003)}
  2361.  
  2362.     This standard assigns the following values at the level immediately
  2363.     subordinate to ANSI-standardZ39.50:
  2364.         1 = application context
  2365.         2 = abstract syntax
  2366.         3 = attribute set
  2367.         4 = diagnostic set
  2368.         5 = record syntax
  2369.         6 = resource report format
  2370.  
  2371. A.1 Application Context
  2372.     This standard assigns the following object identifier for the
  2373. application-context-definition 'basic-Z39.50-ac', contained in Appendix B:
  2374.  
  2375. { iso member-body US ANSI-standard-Z39.50  application-context (1)
  2376.   basic-Z39.50-ac (1) } 
  2377.  
  2378. A.2 Abstract Syntax
  2379.     This standard assigns the following object identifier for the  ASN.1
  2380.     module, contained in section 
  2381. 4.1, defining the Z39.50 APDUs:
  2382.  
  2383. { iso member-body US ANSI-standard-Z39.50  abstract-syntax (2) Z39.50-apdus (1) }
  2384.  
  2385. syntax for apdus.  The transfer syntax results from the application of the
  2386. ASN.1 Basic Encoding Rules (ISO 8825). For the purposes of Presentation
  2387. Context negotiation, this syntax is identified by a pair of object
  2388. identifiers, one for the abstract-syntax (Z39.50-apdus) and one for the
  2389. basic encoding rules:
  2390.         { joint-iso-ccitt asn1 (1) basic-encoding (1) }
  2391.  
  2392. A.3 Attribute set
  2393.     This standard assigns the following object identifier for the
  2394. attribute-set definition 'bib-1', contained in Appendix C:
  2395.  
  2396. { iso member-body US ANSI-standard-Z39.50  attribute-set (3) bib-1 (1) }
  2397.  
  2398. A.4 Diagnostic Set
  2399.     This standard assigns the following object identifier for the
  2400. diagnostic set definition contained in appendix D.
  2401.  
  2402. { iso member-body US ANSI-standard-Z39.50  diagnostic-set (4) bib-1 (1)}
  2403.  
  2404. A.5  Record Syntax
  2405.     Object identifier for Record syntaxes are contained in appendix E.
  2406.  
  2407. A.6 Resource Report Format
  2408.     This standard assigns the following object identifier for the resource
  2409.     report format defined in appendix F.
  2410. { iso member-body US ANSI-standard-Z39.50  resource-report-format (6) bib-1 (1)}
  2411. APPENDIX B: Definition of Application Context basic-Z39.50-ac
  2412.  
  2413.     This appendix is part of the standard. 
  2414.  
  2415.     This appendix defines the application context basic-Z39.50-ac.  The
  2416. object identifier for application context basic-Z39.50-ac is defined and
  2417. registered in Appendix A.
  2418.  
  2419.  
  2420. Definition of application context basic-Z39.50-ac
  2421.  
  2422. ANSI-standard-Z39.50 application context basic-Z39.50-ac, supports an
  2423. application-entity that contains only the following two application service
  2424. elements (ASEs):
  2425.  
  2426.     a) the Association Control service element (ACSE, ISO 8650), and
  2427.     b) the Z39.50 service element.
  2428.  
  2429. [Z30.50 and ACSE are used according to the procedures in section 4.2.1.
  2430.  
  2431. The P-Data service is used to transmit Z39.50 APDUs.
  2432.  
  2433. In the event of protocol errors, the system detecting the error shall abort
  2434. the association.
  2435.  
  2436. APPENDIX C:  Attribute Set bib-1
  2437.  
  2438.          This appendix is part of the standard.  
  2439.  
  2440.          This Appendix defines the attribute-set bib-1. [Attribute-set
  2441. bib-1 is intended for use with bibliographic databases.  The object
  2442. identifier for attribute set bib-1 is defined and registered in Appendix A.
  2443.  
  2444.          When the value of AttributeSetId (within the RPNDefinition within
  2445. the Search APDU) equals the object identifier for this attribute-set, then:
  2446.  
  2447.      a) AttributeType (within AttributeElement within AttributeList) takes
  2448. values from the Attribute type table below, and
  2449.  
  2450.      b)  AttributeValue takes values from the corresponding value table.
  2451.  
  2452. Attribute-Type Values 
  2453.  
  2454. Attribute-type               Value
  2455. Use                          1
  2456. Relation                     2
  2457. Position                     3
  2458. Structure                    4
  2459. Truncation                   5
  2460. Completeness                 6
  2461.  
  2462. USE Values
  2463.     
  2464. Use                          Value   Use                          Value     
  2465. Personal-name                1       MESH-subject                 25
  2466. Corporate-name               2       PA-subject                   26
  2467. Conference-name              3       LC-subject-heading           27
  2468. Title                        4       RVM-subject-heading          28
  2469. Title-series                 5       Local-subject-index          29
  2470. Title-uniform                6       Date                         30
  2471. ISBN                         7       Date-of-publication          31
  2472. ISSN                         8       Date-of-acquisition          32
  2473. LC-card-number               9       Title-key                    33
  2474. BNB-card-number              10      Title-collective             34
  2475. BGF-number                   11      Title-parallel               35
  2476. Local-number                 12      Title-cover                  36
  2477. Dewey-classification         13      Title-added-title-page       37
  2478. UDC-classification           14      Title-caption                38
  2479. Bliss-classification         15      Title-running                39
  2480. LC-call-number               16      Title-spine                  40
  2481. NLM-call-number              17      Title-other-variant          41
  2482. NAL-call-number              18      Title-former                 42
  2483. MOS-call-number              19      Title-abbreviated            43
  2484.  Local-classification        20      Title-expanded               44
  2485. Subject-heading              21      Subject-precis               45
  2486. Subject-Rameau               22      Subject-rswk                 46
  2487. BDI-index-subject            23      Subject-subdivision          47
  2488. INSPEC-subject               24      Number-natl-bibliography     48
  2489.  
  2490. Number-legal-deposit         49      Name-and-title               57
  2491. Number-govt-publication      50      Name-geographic              58
  2492. Number-publisher-for-music   51      Place-publication            59
  2493. Number-db                    52      CODEN                        60
  2494. Number-local-call            53      Microform-generation         61
  2495. Code-language                54      [Abstract                    62
  2496. Code-geographic-area         55      [Note                        63
  2497. Code-institution             56
  2498.  
  2499. Author-title                 1000    [Author                      1007
  2500. NUC-code                     1001    [Author-name-personal        1008
  2501. Combination-of-use           1002    Author-name-corporation      1009
  2502. System-control-number        1003    Author-name-conference       1010
  2503. Subject-classification       1004    Identifier-standard          1011
  2504. Record-type                  1005    Subject-LC-children's        1012
  2505. Name                         1006    Subject-name-personal        1013
  2506.  
  2507.  
  2508. Relation Values 
  2509.  
  2510. Relation                     Value               
  2511. equal                        3
  2512. greater than                 5
  2513. greater or equal             4
  2514. less than                    1
  2515. less than or equal           2
  2516. not equal                    6
  2517.  
  2518.  
  2519. Position Values                       Structure Values 
  2520.  
  2521. Position                     Value     Structure          Value 
  2522. first in field               1         phrase             1 
  2523. first in subfield            2         word               2 
  2524. key                          3
  2525.                              year                         4
  2526. any position in field        3         date               5
  2527.                                        word list          6
  2528.  
  2529. Truncation Values       Completeness Values 
  2530.  
  2531. Truncation                   Value     Completeness               Value
  2532. do not truncation            100       incomplete subfield        1
  2533. right truncation             1         complete subfield          2
  2534. left truncation              2         complete field             3
  2535. left and right               3
  2536. process # in search arg                        
  2537.  
  2538. 101APPENDIX D: Diagnostic Set bib-1  (This appendix is part of the Standard.)
  2539.          This Appendix defines the diagnostic set bib-1.  The object
  2540. identifier for diagnostic set bib-1 is defined and registered in Appendix
  2541. A.  When the value of DiagnosticSetId (within DiagRec within the auxiliary
  2542. definitions for Search Response and Present Response APDUs) equals the
  2543. object identifier for this diagnostic set, then "condition" (within
  2544. DiagRec) takes values from the "Condition" column in the table below.
  2545.  
  2546. CONDITION   MEANING                    TYPE   
  2547. 1    Permanent system error                (1) 
  2548. 2     Temporary system error                         (1) 
  2549. 3    Unsupported search                   (2)
  2550. 4    Terms only exclusion (stop) words        (2) 
  2551. 5    Too many argument words                (2) 
  2552. 6    Too many boolean operators            (2) 
  2553. 7    Too many truncated words            (2) 
  2554. 8    Too many incomplete subfields            (2) 
  2555. 9    Truncated words too short            (2) 
  2556. 10    Invalid format for rec no (search term)        (2) 
  2557. 11    Too many characters in search statement        (2) 
  2558. 12    Too many records retrieved            (2) 
  2559. 13    Present request out-of-range (see note)        (3)
  2560. 14    System error in presenting records        (4) 
  2561. 15    Record not authorized to be sent intersystem    (4) 
  2562. 16    Record exceeds Preferred-message-size        (4) 
  2563. 17    Record exceeds Maximum-record-size        (4)
  2564. 18    Result set not supported as a search term    (2)
  2565. 19    only single rslt set as srch trm supported    (2)
  2566. 20    only ANDing of a single result set as  search term supported    (2)
  2567. 21    result set exists and replace indicator off    (2)
  2568. 22    result set naming not supported            (2)
  2569. 23    combination of specified databases not supported(2)
  2570. 24    Element set names not supported            (1)
  2571. 25    Specified element set name not valid for specified database    (1)
  2572. 26    only a single element set name supported    (1)
  2573. 27    Result set no longer exists - unilaterally deleted by target    (1)
  2574. 28    Result set is in use                (1)
  2575. 29    One of the specified databases is locked    (1)
  2576. 30    Specified result set does not exist        (1)
  2577. 31    Resources exhausted - no results available    (2)
  2578. 32    Resources exhausted - unpredictable partial results available    (2)
  2579. 33    Resources exhausted - valid subset of results available    (2)
  2580. 100    Access-control failure                (1)
  2581. 101      Security challenge required but could not be issued - request
  2582. terminated                         (1)
  2583. 102      Security challenge required but could not be issued - record
  2584. not included                        (4)
  2585. 103      Security challenge failed - record not included  (4)
  2586. 104      Terminated by negative continue response    (1)
  2587. TYPES:             (1)       May occur when search-status or present-status
  2588.                  = "failure". 
  2589.                    (2)       May occur only when search-status = "failure". 
  2590.                    (3)       May occur only when present-status = "failure". 
  2591.                    (4) May occur only as a surrogate for a database record.
  2592. request is partially or wholly out-of-range, and includes the case when
  2593. result-count is zero, but does not include the case where the specified
  2594. result set does not exist.
  2595.  
  2596. APPENDIX E: Record Syntaxes
  2597.  
  2598.          This appendix is part of the Standard.  
  2599.  
  2600.  
  2601.          This appendix defines and registers object identifiers for record
  2602. syntaxes.  Names are assigned using the ASN.1 notation (ISO 8824) for
  2603. OBJECT IDENTIFIER values:
  2604.  
  2605. ANSI-Z39-50-2  DEFINITIONS ::=
  2606. BEGIN
  2607.  
  2608. Z39-50 OBJECT IDENTIFIER ::= { iso (1) member-body (2) US (840)
  2609. ANSI-standard-Z39.50 (10003)}
  2610.  
  2611. RecordSyntax OBJECT IDENTIFIER ::=  { Z39-50 (5) }
  2612.  
  2613. Unimarc ::=  OBJECT IDENTIFIER { RecordSyntax (1) }
  2614. Intermarc ::=  OBJECT IDENTIFIER { RecordSyntax (2) }
  2615. CCF ::= OBJECT IDENTIFIER { RecordSyntax (3) } 
  2616. US-MARC ::= OBJECT IDENTIFIER { RecordSyntax (10) }
  2617. UK-MARC ::= OBJECT IDENTIFIER { RecordSyntax (11) }
  2618. NORMARC ::= OBJECT IDENTIFIER { RecordSyntax (12) }
  2619. LIBRISMARC ::= OBJECT IDENTIFIER { RecordSyntax (13) }
  2620. DANMARC ::= OBJECT IDENTIFIER { RecordSyntax (14) }
  2621. FINMARC ::= OBJECT IDENTIFIER { RecordSyntax (15) }
  2622. MAB1 ::= OBJECT IDENTIFIER { RecordSyntax (16) }
  2623. CAN/MARC ::= OBJECT IDENTIFIER { RecordSyntax (17) }
  2624. SBN ::= OBJECT IDENTIFIER { RecordSyntax (18) }
  2625. PICAMARC ::= OBJECT IDENTIFIER { RecordSyntax (19) }
  2626.  
  2627. END
  2628.  
  2629.  
  2630.  
  2631. NOTES: 
  2632.    (1) The above object identifiers are intended to be used as the values
  2633. of PreferredRecordSyntax in Search and Present APDUs.
  2634.    (2) For the purposes of Presentation Context negotiation, record syntax
  2635. is identified by a pair of object identifiers, one from the above list for
  2636. the abstract-syntax and one for the transfer syntax.  No object identifiers
  2637. are assigned by this standard for transfer syntax for bibliographic
  2638. records.  However, an object identifiers has been assigned (outside of this
  2639. standard) for the transfer-syntax for bibliographic records defined in ISO
  2640. 2709:
  2641.  
  2642.  { iso standard 2709 transfer-syntax  (1) character-encoding (1) }
  2643.  
  2644.  
  2645. APPENDIX F:  Resource Report Format bib-1
  2646.  
  2647.          This appendix is part of the standard.  
  2648.  
  2649.          This Appendix defines the resource report format bib-1.  The
  2650. object identifier for resource report format bib-1 is defined and
  2651. registered in Appendix A.
  2652.  
  2653.  
  2654.          When the value of ResourceReportId (within ResourceReport within
  2655. the auxiliary definitions for the Resource Request APDU) equals the object
  2656. identifier for this resource report format, then EstimateType (within
  2657. Estimate) takes values from the "type" column in the table below.
  2658.  
  2659. Type               Meaning
  2660.  
  2661. 1        estimate of current result for search
  2662. 2        estimate of result at end of search if it completes
  2663. 3        estimate of current result for present
  2664. 4        estimate of result at end of present if it completes
  2665. 5        processing time used by this command so far
  2666. 6        estimated total processing time for command if allowed to complete
  2667. 7        estimate of processing time used by association so far
  2668. 8        estimate of cost for this command so far
  2669. 9        estimate of cost for command if completed
  2670. 10       estimate of cost for this association so far
  2671.  
  2672.  
  2673. ------------------------------
  2674.  
  2675.